Unser Projekt hat das gleiche Problem, bei dem wir Konfigurationen für dev, qa, uat und prod pflegen mussten. Folgendes haben wir befolgt (gilt nur, wenn Sie mit MSBuild vertraut sind):
Verwenden Sie MSBuild mit der Erweiterung der MSBuild Community-Aufgaben. Es enthält die Aufgabe 'XmlMassUpdate', mit der Einträge in jeder XML-Datei massenweise aktualisiert werden können, sobald Sie den richtigen Knoten für den Anfang angegeben haben.
Implementieren:
1) Sie benötigen eine Konfigurationsdatei mit Ihren dev env-Einträgen. Dies ist die Konfigurationsdatei in Ihrer Lösung.
2) Sie benötigen eine 'Substitutions.xml'-Datei, die nur die Einträge enthält, die für jede Umgebung UNTERSCHIEDLICH sind (meistens appSettings und ConnectionStrings). Einträge, die sich in der Umgebung nicht ändern, müssen nicht in diese Datei eingefügt werden. Sie können in der Datei web.config der Lösung gespeichert werden und werden von der Aufgabe nicht berührt
3) Rufen Sie in Ihrer Build-Datei einfach die XML-Massenaktualisierungsaufgabe auf und geben Sie die richtige Umgebung als Parameter an.
Siehe Beispiel unten:
<!-- 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>
Ersetzen Sie '$ Environment' durch 'QA' oder 'Prod', je nachdem, was env. Sie bauen für. Beachten Sie, dass Sie an einer Kopie einer Konfigurationsdatei und nicht an der eigentlichen Konfigurationsdatei selbst arbeiten sollten, um mögliche nicht behebbare Fehler zu vermeiden.
Führen Sie einfach die Build-Datei aus und verschieben Sie die aktualisierte Konfigurationsdatei in Ihre Bereitstellungsumgebung. Fertig!
Lesen Sie Folgendes, um einen besseren Überblick zu erhalten:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx