Możesz użyć zmiennych środowiskowych i ConfigurationBuilder
klasy w swoim Startup
konstruktorze w następujący sposób:
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();
this.configuration = builder.Build();
}
Następnie tworzysz appsettings.xxx.json
plik dla każdego potrzebnego środowiska, gdzie „xxx” to nazwa środowiska. Pamiętaj, że możesz umieścić wszystkie globalne wartości konfiguracyjne w swoim „normalnym”appsettings.json
pliku i umieścić w tych nowych plikach tylko elementy specyficzne dla środowiska.
Teraz potrzebujesz tylko zmiennej środowiskowej wywoływanej ASPNETCORE_ENVIRONMENT
z określoną wartością środowiskową („na żywo”, „staging”, „produkcja”, cokolwiek). Możesz określić tę zmienną w ustawieniach projektu dla swojego środowiska programistycznego i oczywiście musisz ustawić ją również w środowisku pomostowym i produkcyjnym. Sposób, w jaki to robisz, zależy od tego, jakie to jest środowisko.
AKTUALIZACJA: Właśnie zdałem sobie sprawę, że chcesz wybrać na appsettings.xxx.json
podstawie bieżącej konfiguracji kompilacji . Nie da się tego osiągnąć za pomocą proponowanego przeze mnie rozwiązania i nie wiem, czy jest na to sposób. Jednak metoda „zmiennych środowiskowych” działa i równie dobrze może być dobrą alternatywą dla twojego podejścia.