Notre projet a le même problème où nous devions maintenir des configurations pour dev, qa, uat et prod. Voici ce que nous avons suivi (s'applique uniquement si vous êtes familier avec MSBuild):
Utilisez MSBuild avec l'extension de tâches de communauté MSBuild. Il inclut la tâche «XmlMassUpdate» qui peut «mettre à jour en masse» les entrées dans n'importe quel fichier XML une fois que vous lui avez donné le bon nœud pour commencer.
Implémenter:
1) Vous devez avoir un fichier de configuration qui contiendra vos entrées d'environnement de développement; il s'agit du fichier de configuration de votre solution.
2) Vous devez avoir un fichier 'Substitutions.xml', qui ne contient que les entrées qui sont DIFFÉRENTES (appSettings et ConnectionStrings principalement) pour chaque environnement. Les entrées qui ne changent pas dans l'environnement n'ont pas besoin d'être placées dans ce fichier. Ils peuvent vivre dans le fichier web.config de la solution et ne seront pas touchés par la tâche
3) Dans votre fichier de construction, appelez simplement la tâche de mise à jour de masse XML et fournissez le bon environnement en tant que paramètre.
Voir l'exemple ci-dessous:
<!-- 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>
remplacez «$ Environment» par «QA» ou «Prod» en fonction de ce que env. vous construisez pour. Notez que vous devez travailler sur une copie d'un fichier de configuration et non sur le fichier de configuration lui-même pour éviter d'éventuelles erreurs non récupérables.
Exécutez simplement le fichier de construction, puis déplacez le fichier de configuration mis à jour vers votre environnement de déploiement et vous avez terminé!
Pour un meilleur aperçu, lisez ceci:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx