【发布时间】:2021-03-05 23:31:31
【问题描述】:
我在 Azure 中设置了一个管道,它在运行时使用变量替换 XML 配置文件中的值。我将应用程序中的一个错误追溯到没有正确值的配置文件,我可以从管道日志中看到预期值没有被替换。
我最初认为这是因为我使用了自结束标签,但用完整标签替换它们并不能解决问题,用空白值替换它们也不能解决问题。
在其他方面,管道运行良好。我的测试表明它将用空值或非空值替换非空值。但我不能让它用任何东西替换和清空值。所以我认为这并不明显,例如它没有完全跳过替换,它可以匹配变量,变量位于applicationSettings 部分等。搜索似乎只显示几年前的东西,并且通常用空值替换非空值,即与我正在尝试的相反。
我可以在默认配置文件中放入虚拟值并根据需要将它们替换为空/非空值,但这将涉及向管道添加一堆变量,只是在大多数情况下用空值替换它们.这也意味着我需要记住在配置文件中添加任何具有虚拟值的新条目并相应地更新管道。
还有其他人遇到过这个问题吗?如果是这样,您是否解决了它以及如何解决?
我的配置文件示例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<applicationSettings>
<App.Namespace>
<setting name="Test1" serializeAs="String">
<value />
</setting>
<setting name="Test2" serializeAs="String">
<value></value>
</setting>
<setting name="Test3" serializeAs="String">
<value> </value>
</setting>
<setting name="Test4" serializeAs="String">
<value>dummy</value>
</setting>
</App.Namespace>
</applicationSettings>
...
</configuration>
管道变量
Test1 -> Value1
Test2 -> Value2
Test3 -> Value3
Test4 -> Value4
输出配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<applicationSettings>
<App.Namespace>
<setting name="Test1" serializeAs="String">
<value /> <!-- Expected Value1 -->
</setting>
<setting name="Test2" serializeAs="String">
<value></value> <!-- Expected Value2 -->
</setting>
<setting name="Test3" serializeAs="String">
<value> </value> <!-- Expected Value3 -->
</setting>
<setting name="Test4" serializeAs="String">
<value>Value4</value> <!-- Correct -->
</setting>
</App.Namespace>
</applicationSettings>
...
</configuration>
【问题讨论】:
标签: azure-pipelines