5

有没有办法根据子属性定位节点?或删除匹配节点的父节点?

我需要运行 web.config 转换以删除以下第二个 <dependentAssembly> :

<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <!-- Don't want to delete this one -->
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
  </dependentAssembly>
  <!-- This is the one I want to delete -->
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <codeBase version="11.0.0.0" href="file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2011.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
  </dependentAssembly>
 </assemblyBinding>
</runtime>

查找 <assemblyIdentity> 很容易,但我需要删除父 <dependentAssembly>(和 <codeBase>)。如果有一个 "xdt:Transform="RemoveParent" 这可以解决问题,但 AFAIK 没有。

或者,如果我可以在 <dependentAssembly> 上使用一个定位器来匹配孩子,那么它也可以工作。

4

2 回答 2

4

在这里找到了答案

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly xdt:Transform="RemoveAll"
                     xdt:Locator="Condition(starts-with(./_defaultNamespace:assemblyIdentity/@name,'Microsoft.VisualStudio.Enterprise.AspNetHelper'))">
       </dependentAssembly>
    </assemblyBinding>
 </runtime>
于 2015-11-23T16:29:51.650 回答
0

您可以使用此解决方案:Clearing out xdt element if it has no children

2 个步骤:-首先删除子项-其次删除空的 assemblyBinding 元素。

于 2018-02-05T08:44:01.587 回答