Vous pouvez utiliser les variables d'environnement et la fonction ConfigurationBuilder
dans votre Startup
Constructeur comme ceci :
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();
}
Ensuite, vous créez un appsettings.xxx.json
pour chaque environnement dont vous avez besoin, "xxx" étant le nom de l'environnement. Notez que vous pouvez placer toutes les valeurs de configuration globale dans votre fichier "normal". appsettings.json
et ne mettez que les éléments spécifiques à l'environnement dans ces nouveaux fichiers.
Maintenant, vous avez seulement besoin d'une variable d'environnement appelée ASPNETCORE_ENVIRONMENT
avec une valeur d'environnement spécifique ("live", "staging", "production", etc.). Vous pouvez spécifier cette variable dans les paramètres de votre projet pour votre environnement de développement, et bien sûr, vous devez également la définir dans vos environnements de production et de stockage. La façon dont vous le faites dépend du type d'environnement dont il s'agit.
UPDATE : Je viens de réaliser que vous voulez choisir le appsettings.xxx.json
en fonction de votre configuration de construction . Cela ne peut être réalisé avec la solution que je propose et je ne sais pas s'il existe un moyen de le faire. La méthode de la "variable d'environnement", cependant, fonctionne et pourrait aussi bien être une bonne alternative à votre approche.