Создание и запуск файла команды развертывания

Джейсон Ли

В этом разделе описывается, как создать файл команды, позволяющий запускать развертывание с помощью файлов проекта Microsoft Build Engine (MSBuild) в виде одношагового повторяемого процесса.

Этот раздел является частью серии учебников, основанных на требованиях к развертыванию предприятия вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения —решение Contact Manager — для представления веб-приложения с реалистичным уровнем сложности, включая приложение MVC 3 ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.

Метод развертывания в центре этих учебников основан на подходе к разделенному файлу проекта, описанному в разделе "Общие сведения о процессе сборки", в котором процесс сборки управляется двумя файлами проекта — одним из них содержит инструкции по сборке, которые применяются к каждой конечной среде, а также один из них содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется в файл проекта, не зависящем от среды, чтобы сформировать полный набор инструкций по сборке.

Обзор процесса

В этом разделе вы узнаете, как создать и запустить файл команды, использующий эти файлы проекта для выполнения повторяемого развертывания в целевой среде. По сути, файл команд просто должен содержать команду MSBuild, которая:

  • Сообщает MSBuild о необходимости выполнить файл Publish.proj, не зависящий от среды.
  • Сообщает файл Publish.proj , который содержит параметры проекта для конкретной среды и где его найти.

Создайте команду MSBuild

Как описано в разделе "Общие сведения о процессе сборки", файл проекта для конкретной среды (например, Env-Dev.proj) предназначен для импорта в файл среды, не зависящий от среды Publish.proj во время сборки. Вместе эти два файла предоставляют полный набор инструкций, которые сообщают MSBuild, как создавать и развертывать решение.

Файл Publish.proj использует элемент Import для импорта файла проекта для конкретной среды.

<Import Project="$(TargetEnvPropsFile)"/>

Таким образом, при использовании MSBuild.exe для сборки и развертывания решения Диспетчера контактов необходимо выполнить следующие действия.

  • Запустите MSBuild.exe в файле Publish.proj .
  • Укажите расположение файла проекта для конкретной среды, указав параметр командной строки с именем TargetEnvPropsFile.

Для этого команда MSBuild должна выглядеть следующим образом:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Здесь это простой шаг для перехода к повторяемому одношаговому развертыванию. Все, что необходимо сделать, — добавить команду MSBuild в файл .cmd. В решении Диспетчера контактов папка публикации содержит файл с именем Publish-Dev.cmd , который именно это делает.

%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo 
pause

Замечание

Параметр /fl указывает MSBuild создать файл журнала с именем msbuild.log в рабочем каталоге, в котором был вызван MSBuild.exe.

Для развертывания или повторного развертывания решения Диспетчера контактов необходимо запустить файл Publish-Dev.cmd . При запуске файла MSBuild будет выполнять следующие действия:

  • Создайте все проекты в решении.
  • Создайте развертываемые веб-пакеты для проектов веб-приложений.
  • Создайте файлы dbschema и .deploymanifest для проектов базы данных.
  • Разверните веб-пакеты на веб-сервере.
  • Разверните базу данных на сервере базы данных.

Запуск развертывания

При создании файла команд для целевой среды вы сможете выполнить все развертывание, просто выполнив файл.

Развертывание решения Диспетчера контактов в тестовой среде

  1. На рабочей станции разработчика откройте проводник Windows и перейдите к расположению файла Publish-Dev.cmd .

  2. Дважды щелкните файл, чтобы запустить его.

  3. Если появится диалоговое окно "Открыть файл — предупреждение системы безопасности" , нажмите кнопку "Выполнить".

  4. Если параметры конфигурации и тестовые серверы настроены правильно, в окне командной строки отобразится сообщение о успешной сборке , когда MSBuild завершит обработку файлов проекта.

    Если параметры конфигурации и тестовые серверы настроены правильно, в окне командной строки отобразится сообщение о успешной сборке, когда MSBuild завершит обработку файлов проекта.

  5. Если вы впервые развертываете решение для этой среды, необходимо добавить учетную запись тестового компьютера веб-сервера в роли db_datawriter и db_datareader базы данных ContactManager. Эта процедура описана в разделе "Настройка сервера базы данных для веб-развертывания публикации".

    Замечание

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

  6. Откройте Internet Explorer и перейдите по URL-адресу приложения Диспетчера контактов (например, http://testweb1:85/ContactManager/).

  7. Убедитесь, что приложение работает должным образом, и вы можете добавить контакты.

    Убедитесь, что приложение работает должным образом, и вы можете добавить контакты.

Conclusion

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

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Файл команд для публикации в промежуточной среде может содержать следующую команду MSBuild:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj

Замечание

Инструкции по настройке файлов проекта конкретной среды для собственных серверных сред см. в разделе "Настройка свойств развертывания для целевой среды".

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