c# – 如果没有子节点,则清除xdt元素

前端之家收集整理的这篇文章主要介绍了c# – 如果没有子节点,则清除xdt元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我开始玩nuget,它是web.config install / uninstall.xdt值.

我的问题是,是否存在xdt:Transform将清除空元素.我在这里找不到任何东西.
https://msdn.microsoft.com/en-us/library/dd465326%28v=vs.110%29.aspx

这是我的例子.

我当前的Web.config.install.xdt看起来像这样

  1. <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  2. <system.web>
  3. <compilation xdt:Transform="InsertIfMissing">
  4. <assemblies xdt:Transform="InsertIfMissing">
  5. <add xdt:Transform="InsertIfMissing" xdt:Locator="Match(assembly)" assembly="MyAssembly,Version=4.5.4.0,Culture=neutral,PublicKeyToken=asdfasdfasdfasdf" />
  6. </assemblies>
  7. </compilation>
  8. </system.web>
  9. </configuration>

我的卸载看起来像这样

  1. <?xml version="1.0"?>
  2. <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  3. <system.web>
  4. <compilation>
  5. <assemblies>
  6. <add xdt:Transform="Remove" xdt:Locator="Match(assembly)" assembly="MyAssembly,PublicKeyToken=asdfasdfasdfasdf" />
  7. </assemblies>
  8. </compilation>
  9. </system.web>
  10. </configuration>

这是我的web.config之前(简化)

  1. <system.web>
  2. <authentication mode="None" />
  3. <compilation debug="true" targetFramework="4.5" />
  4. <httpRuntime targetFramework="4.5" />
  5. </system.web>

这是install.xtd之后的web.config

  1. <system.web>
  2. <authentication mode="None" />
  3. <compilation debug="true" targetFramework="4.5">
  4. <assemblies>
  5. <add assembly="MyAssembly,PublicKeyToken=asdfasdfasdfasdf" />
  6. </assemblies>
  7. </compilation>
  8. <httpRuntime targetFramework="4.5" />
  9. </system.web>

这是卸载后的web.config

  1. <system.web>
  2. <authentication mode="None" />
  3. <compilation debug="true" targetFramework="4.5">
  4. <assemblies>
  5. </assemblies>
  6. </compilation>
  7. <httpRuntime targetFramework="4.5" />
  8. </system.web>

反正有没有摆脱标签

解决方法

您似乎可以在元素上指定多个转换.因此,您可以从安装中删除内容,然后检查该元素是否具有子元素,如果不是,则删除该元素.
  1. <?xml version="1.0"?>
  2. <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  3. <system.web>
  4. <compilation>
  5. <assemblies>
  6. <add xdt:Transform="Remove" xdt:Locator="Match(assembly)" assembly="MyAssembly,PublicKeyToken=asdfasdfasdfasdf" />
  7. </assemblies>
  8. <assemblies xdt:Locator="Condition(count(*) = 0)" xdt:Transform="Remove"/>
  9. </compilation>
  10. </system.web>
  11. </configuration>

猜你在找的C#相关文章