app.config Преобразования - PullRequest
24 голосов
/ 31 мая 2011

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

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

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

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

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

Ответы [ 5 ]

15 голосов
/ 09 января 2012

Я понимаю, что у вас уже есть ответ, но я наткнулся на SlowCheetah сегодня утром, что является лучшей реализацией, которую я когда-либо видел. Существует также сообщение в блоге о запуске этого с CI-сервера.

15 голосов
/ 31 мая 2011

Вы можете использовать функцию преобразования XML с любым файлом XML - мы делаем это постоянно.Это доступно через задачу MSBuild.

Попробуйте добавить следующее в ваш скрипт сборки:

<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" />
9 голосов
/ 27 мая 2012

Я написал замечательное расширение для автоматизации преобразования app.config, подобное встроенному в проект веб-приложения Преобразование конфигурации

3 голосов
/ 31 мая 2011

Используя ответ Люка Беннетта, я выбрал правильный путь.Я нашел, что это будет ответ для нас.

FTA (см. Ссылку на фрагменты кода):

  1. Добавьте новое свойство ProjectConfigFileName, которое указываетв ваш файл App.Config

  2. Добавьте версию App.Config для каждой конфигурации, т. е. App.Debug.config Чтобы они были вложены в App.Config, отредактируйте файл csproj,

  3. Импортируйте Microsoft.Web.Publishing.targets в файл csproj сразу после импорта Microsoft.CSharp.targets.

  4. Вызовите задачу TransformXmlв вашей цели AfterBuild.Обратите внимание, что цели BeforeBuild и AfterBuild закомментированы по умолчанию.

0 голосов
/ 12 июня 2012

Если у вас несколько клиентских сборок и вы не хотите дублировать одни и те же данные конфигурации, я создал Profigurator . Он будет принимать файл JSON в качестве входных данных и применять настройки к app.config или web.config.

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

...