azure-devops - 在 Azure DevOps 中同时选择 Xml 转换和变量替换时不起作用
问题描述
我一直在研究构建和发布管道一段时间,但最近遇到了这个问题
我正在.net 应用程序上执行配置转换。我遇到的问题有点奇怪.. 如果也启用了 xml 转换,则变量替换不起作用,但仅在启用变量替换时才起作用。我不知道这是可能的,因为在 XML 转换完成后变量替换会起作用。我想同时使用这两个选项。就像我想转换现有的配置文件,然后用管道变量和变量组替换剩余的值。这样我就可以减少其他团队的参与来实现所有价值观的转变,因为我有时间紧迫感。最终会改变一切,但现在我想遵循上述方法。日志确实说 Xml 转换和变量替换成功完成,但变量替换没有
我错过了一些非常愚蠢的东西吗?有没有人遇到过这种问题。
解决方案
根据我的测试,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转换来改变。
推荐阅读
- python - 在多个 celery 队列中以循环方式选择任务
- python - 如何检查文件是否使用 Popen 成功执行?
- c - 检查一个数是否可以表示为两个素数之和的程序
- python - 查找图中没有开始或结束节点的所有路径
- c# - Django:在 C# .net 中执行 PUT 时 CSRF 令牌丢失或不正确
- .net - 如何在 Visual Studio 2017 中添加 .Net 框架 4.6.1 类库而不是 .Net 标准?
- laravel - Laravel 5.5 本地化和 CKEditor
- javascript - 如何从javascript中的列表中删除重复项
- environment-variables - 通过命令行传递 karate.env 不能按预期工作
- android - 虚拟机来宾上的 adb 设备未列出设备