如何根据 Net Core 3.1 中所选的构建配置合并 appsettings.json?

问题描述 投票:0回答:1

我在 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
。在这种情况下,我不想依赖环境变量。

c# configuration appsettings .net-core-3.1
1个回答
6
投票

.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 会自动处理它。

© www.soinside.com 2019 - 2024. All rights reserved.