2015-01-08 10 views
5

Sto provando a impostare una trasformazione web.config per modificare alcuni valori. Sto usando questo esempio dato da Octopus Deploy:Web.Config Transform non modifica alcun valore

http://docs.octopusdeploy.com/display/OD/Configuration+files

ultra-snellita versione di web.config:

<?xml version="1.0" ?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    </compilation> 
    </system.web> 
</configuration> 

la trasformazione:

<?xml version="1.0" ?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
</configuration> 

l'output:

<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    </compilation> 
    </system.web> 
</configuration> 

Sto usando questo strumento per visualizzare l'anteprima della trasformazione: https://webconfigtransformationtester.apphb.com/

come si può vedere non fa nulla. Ho esaminato molti esempi, ma ovviamente mi manca qualcosa. Qualsiasi aiuto sarebbe molto apprezzato.

(ho provato anche questo senza fortuna):

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
     <compilation debug="false" xdt:Transform="Replace"> 
     </compilation > 
    </system.web> 
</configuration> 
+3

Sei sicuro sullo spazio dei nomi del codice XML di input? Se lo si cambia da 'xmlns =" ​​http://schemas.microsoft.com/.NetConfiguration/v2.0 "' a 'xmlns: xdt =" http://schemas.microsoft.com/.NetConfiguration/v2.0 "' l'attributo 'debug' viene rimosso dall'output. –

+0

grazie Matthias, è stato così ... Ho visto circa 10 risorse diverse, e nessuno di loro ha menzionato che dovevo farlo. La contrassegnerò come risposta se desideri inviarlo come tale. –

+0

Ciò che è davvero frustrante è che ho usato Visual Studio per generare automaticamente i file di trasformazione. Penseresti che sarebbe abbastanza intelligente aggiungere quella parte al web.config originale se fosse necessario per la trasformazione. –

risposta

3

La trasformazione funziona come previsto sullo strumento di anteprima in linea menzionata per web.config trasformazioni di https://webconfigtransformationtester.apphb.com/ quando si cambia lo spazio dei nomi del web.config file da

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

a

<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

Wh it questa trasformazione

<?xml version="1.0" ?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
</configuration> 

viene applicato al web.config rettificato

<?xml version="1.0" ?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    </compilation> 
    </system.web> 
</configuration> 

l'attributo debug viene rimosso dal risultato:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <system.web> 
    <compilation targetFramework="4.0"> 
    </compilation> 
    </system.web> 
</configuration> 

Aggiornamento: Come accennato nei commenti , la configurazione del file web.config non dovrebbe avere alcun namespace. Invece, è necessario aggiungere questa importazione

<xdt:Import assembly="AppHarbor.TransformTester" 
      namespace="AppHarbor.TransformTester.Transforms"/> 

al file di trasformazione (almeno, quando si prova con il tester di trasformazione in linea menzionato):

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
<xdt:Import assembly="AppHarbor.TransformTester" 
    namespace="AppHarbor.TransformTester.Transforms"/> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
</configuration> 
+0

In realtà, l'intera dichiarazione dello spazio dei nomi dovrebbe essere rimossa dall'elemento '' nel web.config. 'configuration' non è in un namespace. –

+0

@JohnSaunders Grazie per le informazioni, abbiamo trovato queste informazioni qui: http://msdn.microsoft.com/en-us/library/ee248644%28v=vs.100%29.aspx (non sapendo se si applica alle impostazioni usato qui). La risposta è stata data sulla base dell'esempio menzionato qui: http://msdn.microsoft.com/en-us/library/dd465326.aspx –

+0

Hai letto gli esempi errati. Tutti gli esempi su quella pagina sono di _transformation files_, non di file web.config. –