我有一个配置转换,除其他操作外,在smtpClient
中插入MyAppSettings
节点:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<MyAppSettings>
<smtpClient xdt:Transform="Insert">
<!-- other tags -->
</smtpClient>
</MyAppSettings>
</configuration>
我的问题是,它将应用于来自不同项目的许多Web.config
文件。其中一些具有MyAppSettings
节点:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- other sections -->
<MyAppSettings/>
</configuration>
有些则没有:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- other sections -->
</configuration>
在第二组的任何配置上运行转换时,我得到:
Transformation.xml(4,6):错误:源文档中没有元素与'/ configuration / MyAppSettings / smtpClint'匹配
我尝试用Condition
修复该错误:
<smtpClient
xdt:Locator="Condition(/configuration/MyAppSettings)"
xdt:Transform="InsertAfter(/configuration/MyAppSettings)">
</smtpClient>
但是它给了我同样的错误(我认为InsertAfter
不会插入正确的位置)。
如何使“插入”规则为可选?我的意思是,如果没有“ / configuration / MyAppSettings”节点,则跳过此规则并应用其他转换。