【发布时间】:2016-08-30 08:53:39
【问题描述】:
我无法完全弄清楚我在这里做错了什么。我在网络配置中有一个节点:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
....
我想替换这个:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
使用 MsBuild TransformXml。不过,我不能完全弄清楚 xdt 属性的正确语法。以下(对我来说看起来是正确的):
<dependentAssembly xdt:Transform="Replace"
xdt:Locator="Condition(param/@name='Newtonsoft.Json'">
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
正在导致错误:
XmlNodeException : Transform 和 Locator 属性必须仅包含 类型名称,或类型名称后跟属性列表 括号。
我在这里错过了什么?
我无法更改原始 BTW,这必须使用转换来完成。
【问题讨论】:
-
你可以试试这个转换吗 -
<dependentAssembly xdt:Transform="Replace" xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Newtonsoft.Json')"> -
这会导致错误
XmlNodeException : '/configuration/runtime/_defaultNamespace:assemblyBinding/_defaultNamespace:dependentAssembly[./_defaultNamespace:assemblyIdentity/@name='Newtonsoft.Json']' has an invalid token.@alex。谢谢 -
嗯,我唯一能找到您最初遇到的错误的地方是 - github.com/micahlmartin/XmlTransformer/blob/master/src/… - 这是一个第 3 方解析器...?
标签: xml xpath msbuild msbuild-4.0 xml-document-transform