.net core 如何根据设置更改发布配置以发布不同版本的文件

.net core 如何根据设置更改发布配置以发布不同版本的文件,.net-core,.net-core-configuration,.net Core,.net Core Configuration,您能否了解我们如何更改发布配置以基于这些设置发布不同版本的文件?” 也就是说,我们有三个版本的文件:EmailConfig.json(dev)、EmailConfig.Uat.json(Uat)和EmailConfig.Live.json(Live) 根据设置,文件的正确版本将发布为EmailConfig.json您无法按要求执行。无法发布不同版本的json文件。您可以在此处找到pubish命令的文档: 如果我是你,我会将EmailConfig文件的内容作为“子对象”传递到appsettings

您能否了解我们如何更改发布配置以基于这些设置发布不同版本的文件?”

也就是说,我们有三个版本的文件:
EmailConfig.json
(dev)、
EmailConfig.Uat.json
(Uat)和
EmailConfig.Live.json
(Live)


根据设置,文件的正确版本将发布为
EmailConfig.json

您无法按要求执行。无法发布不同版本的json文件。您可以在此处找到pubish命令的文档:

如果我是你,我会将EmailConfig文件的内容作为“子对象”传递到appsettings文件中,如:

我将为我要部署的每个环境创建一个版本的appsettings文件,使用环境名称,如appsettings.dev.json、appsettings.live.json等。然后在启动构造函数中添加以下内容:

    var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
    var confBuilder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env}.json", true)
            .AddEnvironmentVariables();
这样,您将始终使用特定环境文件的值覆盖appsettings.json文件的值

最后,为了在运行应用程序的计算机中拥有正确的ASPNETCORE_环境变量,您可以在每台计算机上设置该变量,或者甚至可以将环境名称作为发布配置的一部分推送(从一开始就希望如此),如下所示:

您可以检查:

    var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
    var confBuilder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env}.json", true)
            .AddEnvironmentVariables();
dotnet publish /p:Configuration=Release /p:EnvironmentName=Development