Azure Devops 发布管道 XML 变量替换不起作用

M.R*_*.R. 6 azure variable-substitution devops azure-devops azure-pipelines

我的发布管道中有一个非常简单的变量替换,但它不起作用。connectionStrings.config我在文件中有这样的变量:

<?xml version="1.0"?>
<connectionStrings>
  <add name="ExpenseDBConnectionString" connectionString="__ProdConnString__" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

然后我在发布管道中定义了变量:

在此输入图像描述

我还在XML Variable Substitution部署任务中启用了:

在此输入图像描述

但我运行了该版本,并且该变量没有被替换。我在日志中收到此消息:

2020-02-28T19:57:26.1262198Z Initiated variable substitution in config file : D:\a\_temp\temp_web_package_875508750741006\Content\D_C\a\1\s\Expenses.Web\obj\Release\Package\PackageTmp\App_Config\ConnectionStrings.config
2020-02-28T19:57:26.1312311Z Processing substitution for xml node : connectionStrings
2020-02-28T19:57:26.1321602Z Skipped Updating file: D:\a\_temp\temp_web_package_875508750741006\Content\D_C\a\1\s\Expenses.Web\obj\Release\Package\PackageTmp\App_Config\ConnectionStrings.config
Run Code Online (Sandbox Code Playgroud)

这应该很简单,所以不确定我缺少什么设置。帮助!

Lev*_*SFT 11

ExpenseDBConnectionString您应该按照发布管道中的方式定义变量名称。以下是该设置的说明XML variable substitution。变量与keyname条目进行匹配

构建或发布管道中定义的变量将与任何配置文件和parameters.xml 的appSettings、applicationSettings 和connectionStrings 部分中的“key”或“name”条目进行匹配。变量替换在配置转换后运行。

所以定义的变量应该如下所示:

在此输入图像描述

下面的屏幕截图是我的测试版本的结果,您可以看到连接字符串已被替换。

在此输入图像描述

有关 XML 变量替换的更多信息,请查看此处

还有一些第三方替换工具(即Magic Chunks)可以用来替换您的配置设置。请查看该线程的示例。