在Azure DevOps中同时选择Xml转换和变量替换时不起作用

时间:2020-07-24 06:41:43

标签: azure-devops variable-subsitution

我已经在构建和发布管道上工作了一段时间,但是最近遇到了这个问题

我正在.net应用程序上执行配置转换。我遇到的问题有点奇怪。.如果也启用了xml转换,则变量替换将不起作用,但仅在启用了变量替换时才起作用。我不知道这是可能的,因为按照我的观点,在XML转换完成之后,变量替换将起作用。我想同时使用两个选项。就像我想转换现有的配置文件,然后用管道变量和变量组替换其余值。这样一来,由于时间紧迫,我将不需要其他团队的参与就能获得所有价值的转化。最终一切都会改变,但现在我想遵循上述方法。日志确实显示Xml转换和变量替换已成功完成,但变量替换未发生。

我很傻吗?有没有人遇到过这种问题。

enter image description here

1 个答案:

答案 0 :(得分:0)

根据我的测试,XML variable substitutionXML transformation可以同时工作。

这是原始的web.config文件:

enter image description here

检查日志,转换发生在_temp文件夹而不是$(System.DefaultWorkingDirectory)中(例如,我使用部署组运行任务,因此$ {System.DefaultWorkingDirectory)路径为{{1 }}。

enter image description here

在temp文件夹中,我注意到文件已成功转换。

enter image description here

如果您部署的对象是文件夹,则只能在临时文件夹中找到此转换。部署后,此文件夹的内容将在部署后自动删除。

如果您部署的对象是 zip 文件,除了temp文件夹外,还将在C:\azagent\A18\_work\r4\a路径中自动生成一个zip,并且在该路径中自动生成web.config文件。 zip也已成功转换。

enter image description here

enter image description here

更新

以下是一些详细信息:

文件:(web.config和web.qa.config)

enter image description here

Web.config:

$(System.DefaultWorkingDirectory)

Web.qa.config:

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PCWSUser" value="TheUserName" />
  </appSettings>

发布管道变量:

enter image description here

任务设置:

enter image description here

摘要: <appSettings> <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="webpages:Enabled" value="true" /> <add key="PCWSUser" value="TheUserNameQA" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/> </appSettings> 通过变量替换来更改。其他则通过xml转换进行更改。