2015-02-18 8 views
5

Così sto iniziando a giocare con nuget e sono i valori di web.config install/uninstall.xdt.Cancellare l'elemento xdt se non ha figli

La mia domanda sarebbe, Esiste e xdt: Trasforma che cancellerà gli elementi vuoti. Non ho trovato nulla qui. https://msdn.microsoft.com/en-us/library/dd465326%28v=vs.110%29.aspx

Ecco il mio esempio.

mio Web.config.install.xdt attuale assomiglia a questo

<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> 

e la mia disinstallazione si presenta così

<?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> 

Ecco il mio web.config prima (semplificato)

<system.web> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
    </system.web> 

Ecco il mio web.config dopo l'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> 

Ecco il mio web.config dopo la disinstallazione

<system.web> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     </assemblies> 
    </compilation> 
    <httpRuntime targetFramework="4.5" /> 
    </system.web> 

Esiste un modo per sbarazzarsi del tag?

risposta

5

Sembra che sia possibile specificare più trasformazioni su un elemento. Pertanto è possibile rimuovere il contenuto dall'installazione e quindi verificare se l'elemento ha figli, se non rimuovere l'elemento.

<?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> 
+0

wow grazie, proverò a testare la soluzione il prima possibile. Dovrò rispolverare il mio codice, è passato un po 'di tempo. – Lareau

+0

grazie, l'ho provato stamattina e ha funzionato come un incantesimo. Buone informazioni per sapere. – Lareau

+0

Ottimo consiglio, grazie – resp78

Problemi correlati