Управление несколькими файлами конфигурации в Visual Studio для проекта C # - PullRequest
1 голос
/ 18 июня 2009

Я узнал, что сборки должны быть очень простыми и требовать меньшего вмешательства человека. В моей ситуации у меня есть 3 среды: DEV (версия для разработки), SIT (тестирование интеграции STG) и UAT (тестирование приемлемости пользователя). Все эти среды имеют разные детали подключения к базе данных и другие параметры (например, ведение журнала).

В настоящее время, когда необходимо развернуть приложение в среде SIT, мне нужно создать приложение. Установите его в целевой среде и отредактируйте файл конфигурации вручную. Это проблематично, так как я могу пропустить некоторые записи. Ситуация будет ухудшаться, когда конфигурационный файл огромен.

Вопросы

1 - есть ли в любом случае указать имя среды при сборке из VS. Так что файл конфигурации для этой среды будет использоваться.

2 - Какие еще методы помогут уменьшить вмешательство человека в сборку?

3 - Предположим, что мое приложение называется "Foo". У меня есть проект пакета в решении, которое создаст устанавливаемый пакет. Можно ли в любом случае указать название продукта в зависимости от среды? Я имею в виду, если выбран SIT, название продукта при установке будет «Foo-SIT». Я предполагаю, что это поможет избежать путаницы в том, какую версию среды установить. Я был бы рад услышать любые лучшие альтернативы, если таковые имеются.

Ответы [ 3 ]

2 голосов
/ 19 июня 2009

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

<project name="MyApp" xmlns="http://nant.sf.net/release/0.85/nant.xsd">
    <target name="DEV">
      <!-- execute any tasks needed to build the app, such as msbuild(1) -->

      <!-- execute any tasks needed to build the tweak the config files, such as xmlpeek / xmlpoke(2) -->

      <!-- execute any tasks needed to copy the now-built and configured project output the tweak the destination server, such as copy(3)-->
    </target>

    <target name="SIT">...</target>
    <target name="UAT">...</target>

</project>

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

2 голосов
/ 15 апреля 2011

Вы можете посмотреть на инструмент EnvRide на codeplex.com . Его цель состоит именно в том, чтобы упростить автоматическое управление несколькими файлами конфигурации.

1 голос
/ 18 июня 2009

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

Внутри события после сборки вы можете указать имя проекта на основе макроса $ (ProjectName). Так что вы можете делать такие вещи, как

IF "$(ProjectName)"="devproject" (
   copy ...
   copy ...
)

Лучше сделать так, чтобы эти проекты переносили большую часть реальной работы (компиляцию) на один проект, чтобы вам не приходилось обновлять настройки для нескольких проектов.

...