Il nostro progetto ha lo stesso problema in cui abbiamo dovuto mantenere le configurazioni per dev, qa, uat e prod. Ecco cosa abbiamo seguito (vale solo se hai familiarità con MSBuild):
Utilizzare MSBuild con l'estensione delle attività della community MSBuild. Include l'attività 'XmlMassUpdate' che può 'aggiornare in massa' le voci in qualsiasi file XML dopo avergli assegnato il nodo corretto.
Implementare:
1) Devi avere un file di configurazione che avrà le tue voci di sviluppo; questo è il file di configurazione nella tua soluzione.
2) È necessario disporre di un file 'Substitutions.xml', che contenga solo le voci DIVERSE (appSettings e ConnectionStrings principalmente) per ciascun ambiente. Le voci che non cambiano nell'ambiente non devono essere inserite in questo file. Possono vivere nel file web.config della soluzione e non verranno toccati dall'attività
3) Nel tuo file di build, chiama semplicemente l'attività di aggiornamento di massa XML e fornisci l'ambiente giusto come parametro.
Vedi l'esempio seguente:
<!-- Actual Config File -->
<appSettings>
<add key="ApplicationName" value="NameInDev"/>
<add key="ThisDoesNotChange" value="Do not put in substitution file" />
</appSettings>
<!-- Substitutions.xml -->
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
<substitutions>
<QA>
<appSettings>
<add xmu:key="key" key="ApplicationName" value="NameInQA"/>
</appSettings>
</QA>
<Prod>
<appSettings>
<add xmu:key="key" key="ApplicationName" value="NameInProd"/>
</appSettings>
</Prod>
</substitutions>
</configuration>
<!-- Build.xml file-->
<Target Name="UpdateConfigSections">
<XmlMassUpdate ContentFile="Path\of\copy\of\latest web.config" SubstitutionsFile="path\of\substitutionFile" ContentRoot="/configuration" SubstitutionsRoot="/configuration/substitutions/$(Environment)" />
</Target>
sostituire "$ Environment" con "QA" o "Prod" in base a quale env. stai costruendo per. Si noti che è necessario lavorare su una copia di un file di configurazione e non sul file di configurazione stesso per evitare eventuali errori non recuperabili.
Basta eseguire il file di build e quindi spostare il file di configurazione aggiornato nel proprio ambiente di distribuzione e il gioco è fatto!
Per una migliore visione d'insieme, leggi questo:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx