如何在ASPNETCORE_ENVIRONMENT中指定多个appsettings文件?
关于在launchSettings.json中指定多个appsettings文件的问题
首先明确:ASPNETCORE_ENVIRONMENT环境变量不支持数组格式,你示例里的["Development", "AddOn"]写法是无效的,无法被ASP.NET Core识别。
不过要实现加载多个额外配置文件的需求,有两种可行方案:
方案1:用分号分隔多个环境名称
ASP.NET Core 3.1及以后版本支持通过分号分隔多个环境名称,将ASPNETCORE_ENVIRONMENT设为单个字符串即可。修改launchSettings.json如下:
"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development;AddOn" } } }
配置文件的加载顺序为:
appsettings.json(基础配置)appsettings.Development.json(Development环境配置)appsettings.AddOn.json(AddOn环境配置)appsettings.Development.AddOn.json(如果存在,对应两个环境的叠加配置)
后面加载的配置文件中,同名配置项会覆盖前面的。
方案2:手动在代码中添加配置文件
如果你需要更灵活的控制(比如只在特定环境加载额外配置,或者加载非环境命名的配置文件),可以在Program.cs(.NET 6+)中手动添加配置源:
var builder = WebApplication.CreateBuilder(args); // 加载默认配置后,添加额外的AddOn配置文件 builder.Configuration.AddJsonFile( "appsettings.AddOn.json", optional: true, // 设为true表示文件不存在也不会报错 reloadOnChange: true // 开启配置文件热重载 ); // 可选:仅在Development环境下加载额外的开发环境AddOn配置 if (builder.Environment.IsDevelopment()) { builder.Configuration.AddJsonFile( "appsettings.Development.AddOn.json", optional: true, reloadOnChange: true ); } // 后续的服务注册等逻辑... var app = builder.Build();
内容的提问来源于stack exchange,提问作者Meeth46
相关产品推荐
相关产品推荐

