Создание и запуск командного файла развертывания
В этом разделе описывается, как создать командный файл, который позволит запускать развертывание с помощью файлов проекта Microsoft Build Engine (MSBuild) в виде одношагового повторяемого процесса.
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения диспетчера контактов для представления веб-приложения с реалистичным уровнем сложности, включая приложение 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 содержит файл с именем 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-файлы для проектов базы данных.
- Разверните веб-пакеты на веб-сервере.
- Разверните базу данных на сервере базы данных.
Запуск развертывания
Создав командный файл для целевой среды, вы сможете завершить все развертывание, просто запустив файл.
Развертывание решения Диспетчера контактов в тестовой среде
На рабочей станции разработчика откройте windows Обозреватель и перейдите к расположению файла Publish-Dev.cmd.
Дважды щелкните файл, чтобы запустить его.
Если откроется диалоговое окно Открытие файла — предупреждение системы безопасности , нажмите кнопку Выполнить.
Если параметры конфигурации и тестовые серверы настроены правильно, в окне командной строки появится сообщение Сборка выполнена успешно , когда MSBuild завершит обработку файлов проекта.
Если решение развертывается в этой среде впервые, необходимо добавить учетную запись компьютера тестового веб-сервера в db_datawriter и db_datareader роли в базе данных ContactManager . Эта процедура описана в разделе Настройка сервера базы данных для публикации веб-развертывания.
Примечание
Эти разрешения необходимо назначить только при создании базы данных. По умолчанию процесс сборки не будет повторно создавать базу данных при каждом развертывании, а сравнивает существующую базу данных с последней схемой и вносит только необходимые изменения. В результате необходимо сопоставить эти роли базы данных только при первом развертывании решения.
Откройте интернет-Обозреватель и перейдите по URL-адресу приложения Диспетчера контактов (например,
http://testweb1:85/ContactManager/
).Убедитесь, что приложение работает должным образом и вы можете добавлять контакты.
Заключение
Создание командного файла, содержащего инструкции 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.