2015-07-03 11 views
8

Ho trasformazioni web.config per diversi ambienti. Nel file di configurazione ho una sezione applicationSettings con diverse coppie di impostazioni e valori.trasformazioni web.config per <applicationSettings>

Ho provato in base alla sintassi che utilizzo per abbinare il nome e modificare le stringhe di connessione per abbinare anche le impostazioni e modificare il valore, ma le trasformazioni stanno fallendo. È possibile?

Quindi il mio web.config ha:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

il mio file di trasformazione ha

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/> 
</applicationSettings> 

ricevo errori quando l'anteprima la trasformazione ma, mentre l'impostazione stringa di connessione si trasformano il valore per IMP1 non è. Qualsiasi aiuto apprezzato.

UPDATE

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/> 
</applicationSettings> 

Purtroppo lo stesso problema ... Nessun errore e senza trasformare.

SOLUZIONE ho dimenticato di menzionare ho risposta più di un'impostazione in modo marcato è parziale soluzione ... Questo è come ho fatto ... Web.Config ...

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial Value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>Initial Value 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Transform file

<applicationSettings xdt:Transform="Replace"> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>CHANGED VALUE 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>CHANGED VALUE 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Nota ho dovuto includere tutte le mie impostazioni nidificate e valori, anche se alcuni di loro non è cambiata, come nel caso di impostazione 2 nel mio esempio.

+0

valore è un nodo non è un attributo, e si deve usare Transform = "Sostituisci" – Thorarins

+0

@Andreas ... Per favore vedere il mio aggiornamento .. ancora nessuna gioia. – Mych

risposta

-2

file originale:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

file di trasformazione:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value xdt:Transform="Replace">Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 
+1

Andreas, la trasformazione da sola non ha funzionato. Ho dovuto usare xdt: Transform = "Sostituisci" (maiuscole e minuscole). Ora ho un altro problema Ho più di un'impostazione (12 per la precisione). L'anteprima della trasformazione mostra che la trasformazione è stata eseguita ma tutti contro la prima impostazione, quindi alla fine dell'impostazione di trasformazione1 ha il valore trasformato dell'impostazione12 mentre tutte le altre impostazioni2 all'impostazione 12 rimangono invariate. Qualche idea ... Penso di aver bisogno di una posizione. – Mych

+0

devi vedere l'xml per aiutarti – Thorarins

+1

Ordinato .... Invece di posizionare il xdt: Transform = "Sostituisci" all'interno del valore param l'ho posizionato con la radice di applicationSettings e quello ha funzionato ... dandoti credito come hai puntato nella giusta direzione ... domanda aggiornata con la soluzione corretta. – Mych

0

Transform File:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting xdt:Transform="Replace" xdt:Locator="Match(name)" name="setting1" serializeAs="String"> 
      <value>Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 

16

So che questo è un po 'tardi, ma il seguente trasforma il file ti permetterà di trasformare una sola impostazione quando ne hai più.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <YourProject.Settings> 
     <setting name="Log4NetPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value xdt:Transform="Replace">NewPath</value> 
     </setting> 
    </YourProject.Settings> 
    </applicationSettings> 
</configuration> 
Problemi correlati