C #

Impostare automaticamente appsettings.json per gli ambienti di sviluppo e rilascio nel core di asp.net?

Automatically Set Appsettings



Soluzione:

Ho aggiunto screenshot di un ambiente di lavoro, perché mi è costato diverse ore di ricerca e sviluppo.

  1. Per prima cosa, aggiungi una chiave al tuofile launch.json.



    Guarda lo screenshot qui sotto, ho aggiunto Sviluppo come il mio ambiente.



    Dichiarazione della variabile d



  2. Quindi, nel tuo progetto, crea un nuovoappsettings.{environment}.json file che include il nome dell'ambiente.

    Nella schermata seguente, cerca due file diversi con i nomi:

    • appsettings.Development.Json
    • appSetting.json


    Vista del progetto dei file JSON delle impostazioni dell



  3. E infine, configuralo sul tuoClasse StartUp come questa:

    public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile('appsettings.json', opzionale: false, reloadOnChange: true) .AddJsonFile($'appsettings.{env.EnvironmentName} .json', facoltativo: true) .AddEnvironmentVariables(); Configurazione = costruttore.Build(); }
  4. E alla fine, puoi eseguirlo dalla riga di comando in questo modo:

    dotnet run --environment 'Sviluppo'

    dove 'Sviluppo' è il nome del mio ambiente.


Aggiornamento per .NET Core 3.0+

  1. Puoi usareCreateDefaultBuilder che creerà e passerà automaticamente un oggetto di configurazione alla tua classe di avvio:

    WebHost.CreateDefaultBuilder(args).UseStartup();
    public class Startup { public Startup (configurazione IConfiguration) // iniettato automaticamente { Configuration = configuration; } Configurazione IConfiguration pubblica { get; } /* ... */ }
  2. CreateDefaultBuilder include automaticamente l'appropriatoImpostazioni dell'app. Ambiente .json quindi aggiungi un file appsettings separato per ogni ambiente:

    appsettings.env.json

  3. Quindi impostare ilASPNETCORE_ENVIRONMENT variabile d'ambiente durante l'esecuzione/debug

Come impostare le variabili d'ambiente

A seconda del tuo IDE, ci sono un paio di posti in cui i progetti dotnet cercano tradizionalmente le variabili di ambiente:

  • Per Visual Studio vai su Progetto > Proprietà > Debug > Variabili d'ambiente:

    Visual Studio - Variabili d

  • Per Codice di Visual Studio , modificare.vscode/launch.json >ambiente:

    Visual Studio Code>Avvia ambiente

  • Usando Impostazioni di avvio , modificareProperties/launchSettings.json >variabili ambientali:

    Impostazioni di avvio

    Che può anche essere selezionato dalla barra degli strumenti in Visual Studio

    Menu a discesa delle impostazioni di avvio

  • Usando dotnet CLI , usa la sintassi appropriata per impostare le variabili di ambiente per il tuo sistema operativo

    Nota : quando un'app viene avviata con dotnet run,launchSettings.json viene letto se disponibile eLe impostazioni di environmentVariables in launchSettings.json sovrascrivono le variabili di ambiente.

Come faHost.CreateDefaultBuilder funziona?

.NET Core 3.0 aggiuntoHost.CreateDefaultBuilder nelle estensioni della piattaforma che forniranno un'inizializzazione predefinita diIConfiguration che fornisce la configurazione predefinita per l'app nel seguente ordine:

  1. appsettings.json utilizzando il provider di configurazione JSON.
  2. Impostazioni dell'app. Ambiente .json utilizzando il provider di configurazione JSON. Per esempio:
    • Impostazioni dell'app. Produzione .json o
    • Impostazioni dell'app. Sviluppo .json
  3. Segreti dell'app quando l'app viene eseguita nell'ambiente di sviluppo.
  4. Variabili di ambiente che utilizzano il provider di configurazione delle variabili di ambiente.
  5. Argomenti della riga di comando utilizzando il provider di configurazione della riga di comando.

Ulteriori letture - MS Docs

  • Avvio dell'app in ASP.NET Core
  • Configurazione in ASP.NET Core
  • Usa più ambienti in ASP.NET Core

In ASP.NET Core dovresti usare le variabili d'ambiente invece della configurazione della build per appsettings.json appropriato

  1. Fare clic con il tasto destro sul progetto > Proprietà > Debug > Variabili d'ambiente

    variabili ambientali

  2. ASP.NET Core utilizzerà il file appsettings.json appropriato:

    esempio di file appsettings in Solution Explorer

  3. Ora puoi usare quella variabile d'ambiente in questo modo:

    public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile('appsettings.json', opzionale: true, reloadOnChange: true) .AddJsonFile($'appsettings.{env.EnvironmentName} .json', facoltativo: true) .AddEnvironmentVariables(); Configurazione = costruttore.Build(); }

Nota : Se usi la risposta di @Dmitry, puoi incorrere in problemi, ad es. quando sovrascrivere i valori appsettings.json in Azure.