XDT转换删除了错误的条目

时间:2016-12-23 08:13:46

标签: nuget xdt-transform xdt

在使用NuGet之前,我正在使用this网站来测试我的XDT转换。当我有这个配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  </httpModules>
  </system.web>
</configuration>

并使用此转换:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <httpModules>
      <add name="ErrorLog" xdt:Transform="Remove" />      
    </httpModules>
  </system.web>
</configuration>

结果就是这个输出:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <httpModules>

      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
    </httpModules>
  </system.web>
</configuration>

我不明白为什么删除条目ApplicationInsightsWebTracking而不是ErrorLog。在NuGet包中使用此转换时(删除包时),我得到了相同的结果。如何改变工作中的转变?

1 个答案:

答案 0 :(得分:1)

您还需要使用xdt:Locator="Match()"明确告诉XDT与name属性匹配,否则只考虑元素位置/路径进行匹配(这就是第一个add的原因} element最初被删除了):

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <httpModules>
      <add name="ErrorLog" xdt:Locator="Match(name)" xdt:Transform="Remove" />      
    </httpModules>
  </system.web>
</configuration>