Очистка элемента xdt, если у него нет дочерних элементов
Итак, я начинаю играть с nuget и его значениями install.inffig install / uninstall.xdt.
Мой вопрос будет, есть ли и xdt:Transform, который очистит пустые элементы. Я ничего не нашел здесь. https://msdn.microsoft.com/en-us/library/dd465326%28v=vs.110%29.aspx
Вот мой пример.
Мой текущий Web.config.install.xdt выглядит так
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<compilation xdt:Transform="InsertIfMissing">
<assemblies xdt:Transform="InsertIfMissing">
<add xdt:Transform="InsertIfMissing" xdt:Locator="Match(assembly)" assembly="MyAssembly, Version=4.5.4.0, Culture=neutral, PublicKeyToken=asdfasdfasdfasdf" />
</assemblies>
</compilation>
</system.web>
</configuration>
и моя деинсталляция выглядит так
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<compilation>
<assemblies>
<add xdt:Transform="Remove" xdt:Locator="Match(assembly)" assembly="MyAssembly, Version=4.5.4.0, Culture=neutral, PublicKeyToken=asdfasdfasdfasdf" />
</assemblies>
</compilation>
</system.web>
</configuration>
Вот мой web.config раньше (упрощенно)
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
Вот мой web.config после install.xtd
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="MyAssembly, Version=4.5.4.0, Culture=neutral, PublicKeyToken=asdfasdfasdfasdf" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5" />
</system.web>
Вот мой web.config после удаления
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5">
<assemblies>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5" />
</system.web>
Есть ли способ избавиться от тега?
1 ответ
Решение
Похоже, вы можете указать несколько преобразований для элемента. Поэтому вы можете удалить содержимое из вашей установки, а затем проверить, есть ли у элемента дочерние элементы, если не удалить элемент.
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<compilation>
<assemblies>
<add xdt:Transform="Remove" xdt:Locator="Match(assembly)" assembly="MyAssembly, Version=4.5.4.0, Culture=neutral, PublicKeyToken=asdfasdfasdfasdf" />
</assemblies>
<assemblies xdt:Locator="Condition(count(*) = 0)" xdt:Transform="Remove"/>
</compilation>
</system.web>
</configuration>