Możesz użyć zmiennych środowiskowych i ConfigurationBuilderklasy w swoim Startupkonstruktorze 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.jsonplik 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_ENVIRONMENTz 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.jsonpodstawie 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.