Преобразования app.config
Я большой поклонник добавления преобразований web.config в Visual Studio 2010. См. также Скотт Гензельман недавно поговорил в MIX2011.
Отказывается, что эта функциональность (по крайней мере, как минимум) доступна только для веб-проектов.
В нашем решении у нас есть несколько служб Windows, которые подключаются к другой базе данных в зависимости от среды, в которой они развернуты.
Кто-нибудь придумал хороший, аккуратный способ достижения аналогичной функциональности преобразования "app.config"?
Примечание. Мы используем TFS 2010 для создания наших решений в режиме непрерывной интеграции.
Ответы
Ответ 1
Функцию преобразования XML можно использовать с любым XML файлом - мы делаем это все время. Он доступен с помощью задачи MSBuild.
Попробуйте добавить в свой сборник script следующее:
<UsingTask TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<TransformXml Source="Path\To\Your\Xml.config"
Transform="Path\To\Your\Xml.$(Configuration).config"
Destination="Path\To\Your\Output.config" />
Ответ 2
Я понимаю, что у вас уже есть ответ, но сегодня утром я наткнулся на SlowCheetah, который является лучшей реализацией, которую я видел на сегодняшний день. Существует также сообщение в блоге о том, как это выполняется с сервера CI.
Ответ 3
Я написал красивое расширение для автоматизации преобразования app.config, как тот, который был создан в проекте веб-приложений
Преобразование конфигурации
Ответ 4
Используя Luke Bennett ответ, чтобы настроить меня на правильном пути. Я нашел для нас этот ответ.
FTA (см. ссылку на фрагменты кода):
-
Добавить новое свойство ProjectConfigFileName, которое указывает на ваш файл App.Config
-
Добавьте версию App.Config для каждой конфигурации, то есть App.Debug.config Чтобы их вложить в App.Config, отредактируйте файл csproj,
-
Импортируйте Microsoft.Web.Publishing.targets в ваш файл csproj сразу после импорта Microsoft.CSharp.targets.
-
Вызвать задачу TransformXml в своей целевой настройке AfterBuild. Примечание. Цели BeforeBuild и AfterBuild закомментированы по умолчанию.
Ответ 5
Если у вас несколько клиентских сборок и вы не хотите дублировать одни и те же данные конфигурации, я создал Profigurator. В качестве входа в него будет загружен файл JSON и примените настройки к app.config или web.config.
Немного грубо, когда я пишу это, но в настоящее время я использую его в производственной системе для развертывания, и он отлично работает.