У нашего proj есть та же проблема, где мы должны были поддерживать конфиги для dev, qa, uat и prod. Вот что мы следовали (применимо, только если вы знакомы с MSBuild):
Используйте MSBuild с расширением задач сообщества MSBuild. Он включает в себя задачу «XmlMassUpdate», которая может «массово обновлять» записи в любом файле XML после того, как вы дадите ему правильный узел для запуска.
Для реализации:
1) У вас должен быть один конфигурационный файл, в котором будут ваши записи dev env; это файл конфигурации в вашем решении.
2) Вам необходим файл Substitutiontions.xml, который содержит только записи, РАЗЛИЧНЫЕ (в основном appSettings и 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