Puede hacer uso de variables de entorno y la ConfigurationBuilderclase en su Startupconstructor 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();
this.configuration = builder.Build();
}
Luego, crea un appsettings.xxx.jsonarchivo para cada entorno que necesita, con "xxx" como nombre del entorno. Tenga en cuenta que puede poner todos los valores de configuración global en su "normal"appsettings.json archivo y solo poner las cosas específicas del entorno en estos nuevos archivos.
Ahora solo necesita una variable de entorno llamada ASPNETCORE_ENVIRONMENTcon algún valor de entorno específico ("en vivo", "puesta en escena", "producción", lo que sea). Puede especificar esta variable en la configuración de su proyecto para su entorno de desarrollo y, por supuesto, también debe establecerla en sus entornos de ensayo y producción. La forma en que lo haga depende del tipo de entorno que sea.
ACTUALIZACIÓN: Me acabo de dar cuenta de que desea elegir el appsettings.xxx.jsonbasado en su configuración de compilación actual . Esto no se puede lograr con mi solución propuesta y no sé si hay una manera de hacerlo. La forma de "variable de entorno", sin embargo, funciona y bien podría ser una buena alternativa a su enfoque.