您能探讨一下我们如何更改发布配置,以便根据这些设置发布不同版本的文件吗?">
也就是说,我们有三个版本的文件:EmailConfig.json
(dev(、EmailConfig.Uat.json
(uat(和EmailConfig.Live.json
(live(。
根据设置,文件的正确版本将发布为EmailConfig.json
。
你不能按照你的要求去做。不可能发布json文件的不同版本。您可以在这里找到pubish命令的文档:https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish
如果我是你,我会把EmailConfig文件的内容作为"子对象"传递到appsettings文件中,比如:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"EmailConfig": {
"YourProperty1": "",
"YourProperty2": ""
},
"AllowedHosts": "*"
}
我会为我想要部署的每个环境创建一个版本的appsettings文件,环境名称为appsettings.dev.json、appsettings.live.json等。然后在StartUp构造函数中添加以下内容:
var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var confBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env}.json", true)
.AddEnvironmentVariables();
通过这种方式,您将始终使用特定环境文件的值覆盖appsettings.json文件的值。
最后,为了在运行应用程序的机器中拥有正确的ASPNETCORE_ENVIRONMENT变量,您可以在每台机器上设置该变量,也可以将环境名称作为发布配置的一部分(从一开始就希望如此(,例如:
dotnet publish /p:Configuration=Release /p:EnvironmentName=Development
您可以检查:如何根据发布配置更改硬编码变量?