Saltar al contenido

¿Configurar automáticamente appsettings.json para entornos de desarrollo y lanzamiento en asp.net core?

Te recomendamos que revises esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.

Solución:

He añadido capturas de pantalla de un entorno de trabajo porque me ha costado varias horas de I+D.

  1. Primero, agregue un key para usted launch.json expediente.

    Vea la siguiente captura de pantalla, he agregado Development como mi entorno.

    Declaración de la variable de entorno en launch.json

  2. Luego, en su proyecto, cree un nuevo appsettings.environment.json archivo que incluye el nombre del entorno.

    En la siguiente captura de pantalla, busque dos archivos diferentes con los nombres:

    • appsettings.Development.Json
    • appSetting.json

    Vista de proyecto de archivos JSON de configuración de aplicaciones

  3. Y finalmente, configúralo a tu StartUp clase como esta:

    public Startup(IHostingEnvironment env)
    
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.env.EnvironmentName.json", optional: true)
            .AddEnvironmentVariables();
    
        Configuration = builder.Build();
    
    
  4. Y por último, puede ejecutarlo desde la línea de comando de esta manera:

    dotnet run --environment "Development"
    

    donde "Development" es el nombre de mi entorno.

Actualización para .NET Core 3.0+

  1. Puedes usar CreateDefaultBuilder que creará y pasará automáticamente un objeto de configuración a su clase de inicio:

    WebHost.CreateDefaultBuilder(args).UseStartup();
    
    public class Startup
    
        public Startup(IConfiguration configuration) // automatically injected
        
            Configuration = configuration;
        
        public IConfiguration Configuration  get; 
        /* ... */
    
    
  2. CreateDefaultBuilder incluye automáticamente el correspondiente appsettings.Environment.json archivo, así que agregue un archivo appsettings separado para cada entorno:

    appsettings.env.json

  3. Luego establezca el ASPNETCORE_ENVIRONMENTVariable ambiental al ejecutar/depurar

Cómo establecer variables de entorno

Dependiendo de su IDE, hay un par de lugares donde los proyectos dotnet tradicionalmente buscan variables de entorno:

  • Para Estudio visual vaya a Proyecto > Propiedades > Depurar > Variables de entorno:

    Visual Studio - Variables de entorno

  • Para código de estudio visualeditar .vscode/launch.json > env:

    Código de Visual Studio > Entorno de lanzamiento” origen=”https://i.stack.imgur.com/Qy8f5.png” /></p><div class=

  • Utilizando Configuración de lanzamientoeditar Properties/launchSettings.json > environmentVariables:

    Configuración de lanzamiento

    Que también se puede seleccionar desde la barra de herramientas en Visual Studio

    Menú desplegable de configuración de lanzamiento

  • Utilizando CLI de dotnetuse la sintaxis adecuada para configurar las variables de entorno según su sistema operativo

    Nota: cuando se inicia una aplicación con dotnet run, launchSettings.json se lee si está disponible, y environmentVariables la configuración en launchSettings.json anula las variables de entorno.

  • Cómo Host.CreateDefaultBuilder ¿trabaja?

    .NET Core 3.0 agregado Host.CreateDefaultBuilder bajo extensiones de plataforma que proporcionarán una inicialización predeterminada de IConfiguration que proporciona la configuración predeterminada para la aplicación en el siguiente orden:

    1. appsettings.json utilizando el proveedor de configuración JSON.
    2. appsettings.Environment.json utilizando el proveedor de configuración JSON. Por ejemplo:
      • appsettings.Production.json o
      • appsettings.Development.json
    3. Secretos de la aplicación cuando la aplicación se ejecuta en el entorno de desarrollo.
    4. Variables de entorno mediante el proveedor de configuración de Variables de entorno.
    5. Argumentos de la línea de comandos mediante el proveedor de configuración de la línea de comandos.

    Lecturas adicionales – MS Docs

    En ASP.NET Core, debería usar Variables de entorno en lugar de la configuración de compilación para appsettings.json adecuado

    1. Haga clic derecho en su proyecto> Propiedades> Depurar> Variables de entorno

      Variables de entorno

    2. ASP.NET Core usará el archivo appsettings.json apropiado:

      ejemplo de archivos appsettings en el explorador de soluciones

    3. Ahora puede usar esa variable de entorno de esta manera:

      public Startup(IHostingEnvironment env)
      
          var builder = new ConfigurationBuilder()
              .SetBasePath(env.ContentRootPath)
              .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
              .AddJsonFile($"appsettings.env.EnvironmentName.json", optional: true)
              .AddEnvironmentVariables();
      
          Configuration = builder.Build();
      
      

    Nota: Si usa la respuesta de @ Dmitry, puede tener problemas, por ejemplo. cuando anulando los valores de appsettings.json en Azure.

    Puedes respaldar nuestra tarea escribiendo un comentario y puntuándolo te estamos agradecidos.

    ¡Haz clic para puntuar esta entrada!
    (Votos: 0 Promedio: 0)



    Utiliza Nuestro Buscador

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *