Вы можете создать проект веб-развертывания ( VS2008 , VS2010 ), который представляет собой файл XML MSBuild, который позволяет заменять / вставлять / заменять узлы XML в файле конфигурации при сборке.для определенного профиля.Вероятно, вы потратите полдня на день, чтобы настроить его правильно, но время того стоит, поскольку это может сэкономить вам массу головной боли при развертывании (а также позволяет приблизиться на один шаг к развертыванию в один клик).
Примечание: для проектов веб-развертывания VS2008 вы, вероятно, захотите использовать Задачи сообщества MSBuild .Я не знаю, каково состояние для VS2010 с этими задачами - требуются ли они или нет.
Для наших задач веб-развертывания VS2008, использующих задачи сообщества MSBuild (которые мы используем под VS2010), это выглядитнемного похоже ...
<!-- ... -->
<Target Name="AfterBuild">
<XmlMassUpdate Condition="'$(Configuration)|$(Platform)' == 'Release - Dev|AnyCPU'" ContentFile="$(OutputPath)\web.config" SubstitutionsFile="$(OutputPath)\web.Substitutions.config" ContentRoot="/" SubstitutionsRoot="/configuration/substitutions/dev" />
</Target>
<!-- ... -->
В каталоге нашего веб-приложения есть файл web.Substitutions.config
, который немного похож на ...
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
<substitutions>
<!-- dev settings-->
<dev>
<configuration>
<appSettings file="">
<add xmu:key="key" key="some_setting" value="a_value_is_here"/>
</appSettings>
</configuration>
</dev>
<prod> <!-- you get the idea --></prod>
</substitutions>
</configuration>
Стоит упомянуть, что мы используем Team City для запуска наших проектов веб-развертывания без дополнительной настройки, и это работает без проблем. Hudson аналогично (и немного проще в настройке).