2013-04-22 8 views
9

Sto cercando di creare diversi file di configurazione per casi diversi (debug, release, ecc.) E vorrei modificare alcune impostazioni per build differenti.Come posso trasformare i valori di web.config?

<configuration> 
<applicationSettings> 
<Program1.Properties.Settings> 
    <setting name="CustomerId" serializeAs="String"> 
    <value>Custormer1-13256</value> 
    </setting> 
</Program1.Properties.Settings> 
</applicationSettings> 
</configuration> 

Come posso modificare il valore all'interno del tag in qualcos'altro?

ex. <value>Customer2-343242</value> 
+0

Può spiegare chiaramente poco? –

+0

in web.config Ho il seguente codice. In web.conf2.config voglio cambiare il valore in customer2. So che gli attributi possono essere trasformati tramite xdt, mi chiedo se possiamo applicare questo anche per i valori. – dare2k

+0

Sto cercando qualcosa come Erwin ha suggerito. – dare2k

risposta

0

Uso Web config transformations:

<setting name="CustomerId" serializeAs="String" xdt:Transform="Replace"> 
    <value>Customer2-343242</value> 
</setting> 
+0

Ho provato a mettere xdt: Transform = "Sostituisci" in quel tag, ma non cambia nulla all'interno del valore – dare2k

+0

Hai aggiunto la seconda configurazione facendo clic con il tasto destro su quella originale e scegliendo "Aggiungi config transforms"? – Erwin

+0

Sì, L'ho provato anche tramite questo sito webconfigtransformationtester.apphb.com, non sostituisce nulla – dare2k

0

è necessario mettere la trasformazione in percorso completo per il vostro web.config XML

<applicationSettings> 
    <Program1.Properties.Settings> 
    <setting name="CustomerId"> 
     <value xdt:Transform="Replace">Customer2-343242</value> 
    </setting> 
    </Program1.Properties.Settings> 
</applicationSettings> 

Poi testarlo utilizzando l'opzione di menu

l'anteprima Transform
4

Cambia la tua configurazione in questo modo:

<configuration> 
    <applicationSettings> 
    <Program1.Properties.Settings> 
     <setting name="CustomerId" serializeAs="String"> 
     <value>Custormer1-13256</value> 
     </setting> 
    </Program1.Properties.Settings> 

    </applicationSettings> 
</configuration> 

e fare una trasformazione del genere:

<configuration> 
    <applicationSettings> 
    <Program1.Properties.Settings xdt:Transform="Replace"> 
     <setting name="CustomerId" serializeAs="String"> 
     <value>Custormer1-13256</value> 
     </setting> 
    </Program1.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Quindi non sono realmente "cambiare" il testo del valore interno così tanto come averlo scegliere il giusto valore per ogni configurazione di generazione si crea.

+0

Funziona alla grande se vuoi sostituire tutto nella sezione. –

12

Aggiungi xdt:Locator="Match(name)" al Erwin's answer

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
<applicationSettings> 
    <Program1.Properties.Settings> 
     <setting name="CustomerId" serializeAs="String" xdt:Transform="Replace" 
                  xdt:Locator="Match(name)"> 
      <value>Customer2-343242</value> 
     </setting> 
    </Program1.Properties.Settings> 
</applicationSettings> 

2

Questo funziona:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
     <Program1.Properties.Settings> 
      <setting name="CustomerId" serializeAs="String" xdt:Locator="Match(name)" > 
       <value xdt:Transform="Replace">Customer2-343242</value> 
      </setting> 
     </Program1.Properties.Settings> 
    </applicationSettings> 
</configuration>