2016-12-23 4 views
0

Я использую сайт this для проверки своих преобразований XDT перед использованием в NuGet. Когда у меня есть конфигурационныйПреобразование 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

Вы должны явно указать XDT, чтобы соответствовать по name атрибутов, а также, с помощью xdt:Locator="Match()", в противном случае только элемент местоположение/путь будет рассматриваться на соответствие (именно поэтому первый add элемент был удален изначально):

<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> 
Смежные вопросы