首页 > 解决方案 > 在 Azure DevOps 中同时选择 Xml 转换和变量替换时不起作用

问题描述

我一直在研究构建和发布管道一段时间,但最近遇到了这个问题

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

我错过了一些非常愚蠢的东西吗?有没有人遇到过这种问题。

在此处输入图像描述

标签: azure-devopsvariable-substitution

解决方案


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

这是原始的 web.config 文件:

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

如果你部署的对象是一个文件夹,那么这个转换只能在临时文件夹中找到。部署完成后,该文件夹的内容会在部署后自动删除。

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

在此处输入图像描述

在此处输入图像描述

更新:

以下是一些细节:

文件:(web.config 和 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>

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转换来改变。


推荐阅读