我已经在构建和发布管道上工作了一段时间,但是最近遇到了这个问题
我正在.net应用程序上执行配置转换。我遇到的问题有点奇怪。.如果也启用了xml转换,则变量替换将不起作用,但仅在启用了变量替换时才起作用。我不知道这是可能的,因为按照我的观点,在XML转换完成之后,变量替换将起作用。我想同时使用两个选项。就像我想转换现有的配置文件,然后用管道变量和变量组替换其余值。这样一来,由于时间紧迫,我将不需要其他团队的参与就能获得所有价值的转化。最终一切都会改变,但现在我想遵循上述方法。日志确实显示Xml转换和变量替换已成功完成,但变量替换未发生。
我很傻吗?有没有人遇到过这种问题。
答案 0 :(得分:0)
根据我的测试,XML variable substitution
和XML transformation
可以同时工作。
这是原始的web.config文件:
检查日志,转换发生在_temp
文件夹而不是$(System.DefaultWorkingDirectory)
中(例如,我使用部署组运行任务,因此$ {System.DefaultWorkingDirectory)路径为{{1 }}。
在temp文件夹中,我注意到文件已成功转换。
如果您部署的对象是文件夹,则只能在临时文件夹中仅找到此转换。部署后,此文件夹的内容将在部署后自动删除。
如果您部署的对象是 zip 文件,除了temp文件夹外,还将在C:\azagent\A18\_work\r4\a
路径中自动生成一个zip,并且在该路径中自动生成web.config文件。 zip也已成功转换。
更新:
以下是一些详细信息:
文件:(web.config和web.qa.config)
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>
发布管道变量:
任务设置:
摘要: <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转换进行更改。