在使用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包中使用此转换时(删除包时),我得到了相同的结果。如何改变工作中的转变?
答案 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>