如何根据 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 会自动处理它。
我在 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 会自动处理它。