Modifica il file di configurazione in base alle costanti di generazione
-
02-07-2019 - |
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.
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