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

How to merge appsettings.json depending on the selected build configuration in Net Core 3.1?

我在 Net Core 3.1 中有一个 Worker Service,它从 appsettings.json 文件中读取生产设置,并在开发期间(使用 "Debug" 构建配置)覆盖 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 会自动处理它。