По моему опыту, мне было проще иметь три файла в моем проекте, скажем, Web-Release.config
, Web-Debug.config
и Web.config
, а затем я изменяю файл проекта (который является просто MSBuild). скрипт), чтобы скопировать содержимое файла -Debug
или -Release
поверх Web.config
в процессе сборки. К счастью, этот тип поведения, очевидно, встроен в Visual Studio 2010, но в настоящее время его довольно легко добавить, просто щелкнув правой кнопкой мыши файл проекта, выгрузив его, а затем отредактировав файл для переключения:
<Target Name="AfterBuild">
<Copy SourceFiles="Web-Debug.config" DestinationFiles="Web.config" ContinueOnError="false" Condition="'$(Configuration)' == 'Debug'" />
<Copy SourceFiles="Web-Release.config" DestinationFiles="Web.config" ContinueOnError="false" Condition="'$(Configuration)' == 'Release'" />
</Target>
Другой вариант, который я использовал в прошлом, заключался в создании задачи MSBuild для этого слияния XML-файлов . Это было полезно для генерации App.config
файлов, которые были предоставлены для общего доступа на сервере с хостом консольного приложения Windows (для отладки) и хостом службы Windows (для производства): большинство общих настроек находились в App.config
в общем ресурсе проекта, и у каждого хост-проекта был App.config
, который определял дополнительные настройки, и затем я редактировал проект MSBuild каждого хост-проекта, чтобы запустить свое пользовательское задание, чтобы объединить два App.config
в один большой App.config
. Но это было, вероятно, излишним.
Я думаю, что проще создать файл .config
для каждого из ваших сценариев развертывания, как описано выше. Если есть много общего, использование атрибута configSource
для элементов может сократить дублирование.
Надеюсь, это поможет решить природу вашей проблемы, хотя, вероятно, это было не совсем то, что вы искали.