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

Xml Transformation and Variable substitution doesn't work when both selected in Azure DevOps

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

我正在 .net 应用程序上执行配置 t运行sform。我 运行 遇到的问题有点 st运行ge .. 如果 xml t运行sformation 也启用,变量替换不起作用,但只有在启用变量替换。我不知道这是可能的,按照我的说法,变量替换会在 XML t运行sformation 完成后起作用。我想同时使用这两个选项。就像我想 t运行sform 现有的配置文件,然后用管道变量和变量组替换剩余的值。这样我就可以减少其他团队的参与来获得所有值的 t运行sformation,因为我有时间紧迫。最终会让一切 t运行sformed 但现在我想遵循上述方法。日志确实显示 Xml t运行sformation 和变量替换已成功完成,但变量替换没有发生。

我是不是漏掉了什么很傻的东西?有没有人遇到过这种问题。

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

这是原始 web.config 文件:

检查日志,转换发生在 _temp 文件夹而不是 $(System.DefaultWorkingDirectory)(例如,我使用部署组来 运行 任务,所以 $(System.DefaultWorkingDirectory) 路径是 C:\azagent\A18\_work\r4\a).

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

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

如果你部署的对象是一个zip文件,除了temp文件夹外,还会在$(System.DefaultWorkingDirectory)路径下自动生成一个zip文件,并且web.config 这个zip中的文件也成功转换了。

更新:

这里有一些细节:

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

Web.config:

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

Web.qa.config:

  <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>

发布管道变量:

任务设置:

总结:webpages:Version 被变量替换改变了。其他的都是xml变换