1

Предположим, что у меня есть .NET-проект, который успешно строится. Теперь мне нужно выборочно строить в разных средах, таких как DEV, QA и PROD. Каждый из них требует, чтобы их собственные файлы конфигурации (например, app.config) содержали соответствующие строки подключения и другие настройки.Рекомендуемый способ создания .NET-проекта с выбираемыми конфигурациями

Я рассмотрел простые сценарии предварительной сборки, такие как this one от Scott Hanselman. Это работает, но моя проблема в том, что шаг предварительной сборки изменяет источник. Простое создание проекта приведет к перезаписыванию исходных файлов и ненужному пуску изменений управления версиями.

Я мог бы также заглянуть в скрипты вне VS/MSBuild, чтобы поместить туда конфигурационные файлы после развертывания, но я действительно надеюсь, что есть еще лучший способ. Возможно, этот способ является автономным в VS/MSBuild?

Моя стратегия развертывания на целевом сервере является гибкой. Я рассмотрел проект установки, который потребует конфигурации перед упаковкой. Или, xcopy install тоже в порядке.

Идеи?

ответ

1

Создайте вложенную папку вашего основного проекта, содержащего файлы конфигурации с настройками, специфичными для каждой среды, в которую вы хотите развернуть. Когда вы создаете/развертываете, эти файлы будут перенесены в подкаталог папки bin или цели развертывания. Затем определяют либо сценарий MSBuild, VS поведение после сборки или Commit обработчик в пакет установки (может быть все выше), что либо:

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

Ссылка из основного app.config или web.config в дочерний файл может выглядеть следующим образом:

<connectionStrings configSource="MySeperateConnStringsFile.config" /> 
<appSettings configSource="MySeperateAppSettingsFile.config" /> 

Вы можете сделать это с помощью разделов пользовательской конфигурации, а также; просто убедитесь, что вы настроили эти разделы в области configSections основного файла, как обычно.

2

UPDATE 01/09/2012 - Я начал использовать Team Build для этого проекта и не хотел, чтобы установить Windows SDK на моей машине построения. Я провел некоторое исследование и наткнулся на SlowCheetah, что и способ . Существует также blog post, чтобы получить это и работать с Team Build.


Преобразование Visual Studio XML в файлы app.config. Расширение того, что было введено для веб-ребята. В то время как я не понял ничего из этого, следующие ресурсы для его создания:

Вы можете получить файл .targets с инструкциями по его использованию с this article. Убедитесь, что вы прочитали обновления в конце статьи для получения самой последней информации.

Вам также понадобится информация из Vishal Joshi's blog, в которой описано, как настроить все в вашем проекте. Простые вещи, такие как получение файлов .config для гнездования друг друга в проводнике решений, приносят мне радость!

Если у вас его еще нет, вам необходимо установить SDK .NET Framework 4.0, так как материал преобразования использует инструмент оттуда.

В этих статьях есть подсказки и ссылки, чтобы вы могли перейти к синтаксису преобразования. Это довольно прямолинейно, когда вы видите образец или два.

Удачи вам!