У нашого проекту є та сама проблема, де нам довелося підтримувати конфігурації для dev, qa, uat та prod. Ось що ми дотримувались (стосується лише якщо ви знайомі з MSBuild):
Використовуйте MSBuild з розширенням завдань спільноти MSBuild. Він включає завдання "XmlMassUpdate", яке може "масово оновити" записи у будь-якому XML-файлі, як тільки ви дасте йому правильний вузол для початку.
Впровадити:
1) Вам потрібно мати один конфігураційний файл, у якому будуть записані ваші dev env; це конфігураційний файл у вашому рішенні.
2) Потрібно мати файл "Substitutions.xml", який містить лише записи, які є РІЗНИМИ (в основному програми та налаштування ConnectionStrings) для кожного середовища. Записи, які не змінюються в оточенні, не потрібно вносити до цього файлу. Вони можуть жити у файлі web.config рішення та не будуть торкатися цього завдання
3) У вашому файлі збірки просто викличте завдання оновлення масової інформації XML та введіть правильне середовище як параметр.
Дивіться приклад нижче:
<!-- 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>
замініть "$ Environment" на "QA" або "Prod" на основі env. ви будуєте для. Зауважте, що вам слід працювати над копією конфігураційного файлу, а не власне самим конфігураційним файлом, щоб уникнути можливих помилок, які не підлягають відновленню.
Просто запустіть файл збірки, а потім перемістіть оновлений конфігураційний файл у ваше середовище розгортання, і ви закінчили!
Для кращого огляду читайте це:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx