Nasz projekt ma ten sam problem, w którym musieliśmy utrzymywać konfiguracje dla dev, qa, uat i prod. Oto, czego przestrzegaliśmy (dotyczy tylko osób zaznajomionych z programem MSBuild):
Użyj programu MSBuild z rozszerzeniem zadań społeczności MSBuild. Zawiera zadanie „XmlMassUpdate”, które może „masowo aktualizować” wpisy w dowolnym pliku XML, gdy podasz mu właściwy węzeł na początek.
Wdrożenie:
1) Musisz mieć jeden plik konfiguracyjny, który będzie zawierał wpisy dev env; to jest plik konfiguracyjny w Twoim rozwiązaniu.
2) Musisz mieć plik „Substitutions.xml”, który zawiera tylko RÓŻNE wpisy (głównie appSettings i ConnectionStrings) dla każdego środowiska. Wpisy, które nie zmieniają się w środowisku, nie muszą być umieszczane w tym pliku. Mogą mieszkać w pliku web.config rozwiązania i nie zostaną dotknięci przez zadanie
3) W pliku kompilacji po prostu wywołaj zadanie masowej aktualizacji XML i podaj odpowiednie środowisko jako parametr.
Zobacz przykład poniżej:
<!-- 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>
zamień „$ Environment” na „QA” lub „Prod” w zależności od tego, jakie środowisko. dla którego budujesz. Zauważ, że powinieneś pracować na kopii pliku konfiguracyjnego, a nie na samym pliku konfiguracyjnym, aby uniknąć ewentualnych niemożliwych do odzyskania błędów.
Po prostu uruchom plik kompilacji, a następnie przenieś zaktualizowany plik konfiguracyjny do środowiska wdrażania i gotowe!
Aby uzyskać lepszy przegląd, przeczytaj to:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx