【问题标题】:Xml Transformation and Variable substitution doesn't work when both selected in Azure DevOps在 Azure DevOps 中同时选择 Xml 转换和变量替换时不起作用
【发布时间】:2020-11-14 00:02:11
【问题描述】:

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

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

我是否错过了一些非常愚蠢的事情?有没有人遇到过这种问题。

【问题讨论】:

  • 请指点一下?仍然卡在这个问题上。
  • 从截图来看,您似乎正在使用IIS web app deploy 任务。如果是,您可以在部署过程中检查_temp 文件夹。转换发生在此文件夹中。你可以参考答案。如有误解,请指正。

标签: azure-devops variable-substitution


【解决方案1】:

根据我的测试,XML variable substitutionXML 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)

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

【讨论】:

  • 感谢 Kevin 的回复,这并没有真正说明转换是否由于 xml 或变量而发生。几个快速的问题。您是否选择了管道中的两个选项,即 xml 和 var,并且您是否将转换文件放在同一位置,即 web.qa.config 等...您能否指定哪些值因 XML 转换而更改以及哪些值已更改由于变量替换。
  • 嗨@AnsibleUser。请检查更新。我已经分享了有关您的问题的一些详细信息。
  • 感谢 Kevin 的澄清,我看到的唯一区别是配置中的变量是互斥的,即键不能同时出现在两个位置,即 transform 和 var。如果是,则转换优先。我假设首先发生转换,然后被变量替换覆盖。会试试看。再次感谢凯文。
  • 是的。你说的对。 XML 转换在变量转换之前运行。所以如果在xx.qa.config和variable中定义了变量,最​​终会被variable中的值替换掉。
  • @AnsibleUser。如果答案能给你一些帮助,你可以考虑accepting it as answer。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2011-07-06
相关资源
最近更新 更多