Рекомендуемый способ создания проекта .NET с возможностью выбора конфигурации - PullRequest
1 голос
/ 21 сентября 2010

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

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

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

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

Идеи?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

ОБНОВЛЕНИЕ 01/09/2012 - я начал использовать Team Build для этого проекта и не хотел устанавливать Windows SDK на мою сборочную машину.Я провел некоторое исследование и наткнулся на SlowCheetah , который является способом пойти на это.Также есть сообщение в блоге для его запуска и работы с Team Build.


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

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

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

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

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

Удачи!

1 голос
/ 21 сентября 2010

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

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

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

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

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

...