Você pode usar as variáveis de ambiente e a ConfigurationBuilder
classe em seu Startup
construtor desta forma:
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();
}
Em seguida, você cria um appsettings.xxx.json
arquivo para cada ambiente de que precisa, com "xxx" sendo o nome do ambiente. Observe que você pode colocar todos os valores de configuração global em seu appsettings.json
arquivo "normal" e apenas colocar as coisas específicas do ambiente nesses novos arquivos.
Agora você só precisa de uma variável de ambiente chamada ASPNETCORE_ENVIRONMENT
com algum valor de ambiente específico ("live", "staging", "production", qualquer que seja). Você pode especificar essa variável nas configurações do projeto para o seu ambiente de desenvolvimento e, é claro, também precisa defini-la nos ambientes de teste e produção. A maneira como você faz isso depende de que tipo de ambiente é esse.
ATUALIZAÇÃO: Acabei de perceber que você deseja escolher o com appsettings.xxx.json
base em sua configuração de compilação atual . Isso não pode ser alcançado com a minha solução proposta e não sei se existe uma maneira de fazer isso. A forma de "variável de ambiente", entretanto, funciona e pode também ser uma boa alternativa para sua abordagem.