Подтвердить что ты не робот

Преобразования app.config

Я большой поклонник добавления преобразований web.config в Visual Studio 2010. См. также Скотт Гензельман недавно поговорил в MIX2011.

Отказывается, что эта функциональность (по крайней мере, как минимум) доступна только для веб-проектов.

В нашем решении у нас есть несколько служб Windows, которые подключаются к другой базе данных в зависимости от среды, в которой они развернуты.

Кто-нибудь придумал хороший, аккуратный способ достижения аналогичной функциональности преобразования "app.config"?

Примечание. Мы используем TFS 2010 для создания наших решений в режиме непрерывной интеграции.

4b9b3361

Ответ 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.

Немного грубо, когда я пишу это, но в настоящее время я использую его в производственной системе для развертывания, и он отлично работает.