在将构建部署到UAT,生产等多个环境时。我想用config.json替换一个文件config.uat.json或config.prod.json。有没有其他选择?就像我们有XML Transformation。
我知道Json变量替换,但是由于变量列表很长(将近50个条目),所以这并不能满足我的目的
预先感谢!
答案 0 :(得分:2)
JSON variable substitution应该是一个不错的选择,如果您不想在Variables
标签上一个一个地添加变量,则可以使用VSTS REST API对其进行更新,或者添加一个powershell脚本来进行设置变量。
否则,您可能需要删除config.uat.json或config.prod.json,并将config.json复制到目标计算机。
答案 1 :(得分:0)
在您的Program.cs
文件中,您可以获得一个环境变量,该变量代表您当前的环境:
var builder = WebHost.CreateDefaultBuilder(args);
var currentEnv = builder.GetSetting("environnement");
使用此currentEnv
值,您将能够加载文件config.{currentEnv}.json
builder.AddJsonFile($"config.{currentEnv}.json", optional: false, reloadOnChange: true);
编辑:
如果要在Powershell中执行此操作,则可以使用默认设置对配置文件进行转换:包含密钥的appsettings.json和包含重写的appsettings.env.json。
要转换您的配置,您可以执行以下操作:
Param(
[Parameter(Mandatory=$true)][string]$SpecificConfig
)
$defaultConfig = "AppSettings.json";
$settingsContent = ConvertFrom-Json $defaultConfig;
$specificContent = ConvertFrom-Json $SpecificConfig;
# Do this on each <property> to override
if (![string]::IsNullOrEmpty($specificContent.<property>))
{
$settingsContent.<property> = $specificContent.<property>;
}
Write-Host $settingsContent > $defaultConfig;