我在 Net Core 3.1 中有一个工作服务,它从
appsettings.json
文件读取生产设置,并在开发过程中(使用“调试”构建配置),按预期用 appsettings.json
覆盖 appsettings.Development.json
设置。
我为我们的 QA 环境创建了构建配置和发布配置,我希望
appsettings.QA.json
文件在构建/发布时与 appsettings.json
合并。但发布项目仅复制 appsettings.json
与生产设置,而不与 aspsetting.QA.json
文件中的设置合并。
我怎样才能实现这个目标?我不想将
appsettings.QA.json
复制到 QA 环境并将 DOTNET_ENVIRONMENT
设置为 QA
。在这种情况下,我不想依赖环境变量。
.Net Core 不会将文件合并为物理文件。它们使用 Program.cs 中的此类代码块合并到内存中。
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
config.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
您需要做的就是设置环境变量 ASPNETCORE_ENVIRONMENT,.net core 会自动处理它。