Domanda

Ho un'applicazione che dipende da alcuni servizi Web interni e quindi vogliamo che le nostre configurazioni di sviluppo e gestione temporanea puntino ai server di sviluppo e gestione temporanea per i servizi Web.

In questo momento, questo significa modificare manualmente il mio file app.config per puntare agli URL appropriati. Questa non è solo una seccatura, ma soggetta a errori umani (& Quot; oops, non ho rimosso quell'URL di produzione? & Quot; può causare molti problemi).

In una manciata di punti nel codice, uso

#if DEBUG
    // do something
#endif

istruzione di preelaborazione, e mi chiedevo se si potesse fare qualcosa di simile per i valori in app.config. Sono stato in grado di farlo bene con le impostazioni della mia app, poiché questi valori sono accessibili nel codice.

Sono a conoscenza degli script post-build, ma sembra che ci potrebbe essere un modo più semplice rispetto alla scrittura di una routine per scavalcare l'XML app.config ogni volta che eseguo una build. Qualche suggerimento?

Questo è per C #, e .NET 3.5 e include entrambi i vecchi " riferimenti web " così come il nuovo WCF " servizi web " riferimenti.

È stato utile?

Soluzione

Abbiamo usato un programma chiamato XmlPreprocessor da SourceForge per gestire questo. Ti consente di creare parametri nei tuoi file di configurazione e file di valori diversi da cui popolare.

Dati i seguenti file:

app.config

...
<importantSetting>$importantSettingValue$</importantSetting>
...

qavalues.xml

...
<importantSettingValue>QAvalue</importantSettingValue>
...

prodvalues.xml

...
<importantSettingValue>PRODvalue</importantSettingValue>
...

È sufficiente una riga di comando lungo le righe seguenti per ottenere i valori corretti nei punti corretti.

XmlPreProcess.exe app.config qavalues.xml
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top