Сборка и упаковка проектов веб-приложений

Джейсон Ли

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

  • Как конвейер веб-публикации (WPP) расширяет процесс сборки, включая функции развертывания.
  • Как средство веб-развертывания служб IIS превращает веб-приложение в пакет развертывания.
  • Как работает процесс сборки и упаковки и какие файлы создаются.

В Visual Studio 2010 процесс сборки и развертывания проектов веб-приложений поддерживается WPP. WPP предоставляет набор целевых объектов Microsoft Build Engine (MSBuild), которые расширяют функциональные возможности MSBuild и позволяют интегрировать его с веб-развертыванием. В Visual Studio эта расширенная функциональность отображается на страницах свойств для проекта веб-приложения. Веб-страница "Упаковка и публикация" вместе со страницей "Пакет/публикация SQL" позволяет настроить способ упаковки проекта веб-приложения для развертывания после завершения процесса сборки.

Веб-страница

Как работает WPP?

Если взглянуть на файл проекта для проекта веб-приложения на основе C#, можно увидеть, что он импортирует два файла .targets.

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
                 v10.0\WebApplications\Microsoft.WebApplication.targets" />

Первая инструкция Import является общей для всех проектов Visual C#. Этот файл Microsoft.CSharp.targets содержит целевые объекты и задачи, относящиеся к Visual C#. Например, здесь вызывается задача компилятора C# (Csc). Файл Microsoft.CSharp.targets , в свою очередь, импортирует файл Microsoft.Common.targets . Он определяет целевые объекты, которые являются общими для всех проектов, таких как сборка, перестроение, запуск, компиляция и очистка. Вторая инструкция Import связана с проектами веб-приложений. Файл Microsoft.WebApplication.targets , в свою очередь, импортирует файл Microsoft.Web.Publishing.targets . Файл Microsoft.Web.Publishing.targets по сути является WPP. Он определяет целевые объекты, такие как Package и MSDeployPublish, которые вызывают веб-развертывание для выполнения различных задач развертывания.

Чтобы понять, как используются эти дополнительные целевые объекты, в примере решения Диспетчера контактов откройте файл Publish.proj и посмотрите на целевой объект BuildProjects .

<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
  <MSBuild Projects="@(ProjectsToBuild)"
           Properties="OutDir=$(OutputRoot);
                       Configuration=$(Configuration);
                       DeployOnBuild=true;
                       DeployTarget=Package"
           Targets="Build" />
</Target>

Этот целевой объект использует задачу MSBuild для сборки различных проектов. Обратите внимание на свойства DeployOnBuild и DeployTarget :

  • Свойство DeployOnBuild=true по сути означает "Я хочу выполнить дополнительный целевой объект после успешного завершения сборки".
  • Свойство DeployTarget определяет имя целевого объекта, который требуется выполнить, если свойство DeployOnBuild равно true. В этом случае вы указываете, что msBuild будет выполнять целевой объект пакета после сборки проекта.

Целевой объект пакета определен в файле Microsoft.Web.Publishing.targets . По сути, этот целевой объект принимает выходные данные сборки проекта веб-приложения и превращает их в пакет веб-развертывания, который можно опубликовать на веб-сервере IIS.

Примечание

Чтобы просмотреть файл проекта (например, ContactManager.Mvc.csproj) в Visual Studio 2010, сначала необходимо выгрузить проект из решения. В окне Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите команду Выгрузить проект. Снова щелкните узел проекта правой кнопкой мыши и выберите изменить[файл проекта]). Файл проекта откроется в виде необработанного XML-кода. Не забудьте перезагрузить проект по завершении.
Дополнительные сведения о целевых объектах, задачах и инструкциях импорта MSBuild см. в разделе Общие сведения о файле проекта. Более подробное введение в файлы проекта и WPP см. в статье Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.

Что такое пакет веб-развертывания?

При сборке и развертывании проекта веб-приложения с помощью Visual Studio 2010 или непосредственно с помощью MSBuild конечным результатом обычно является пакет веб-развертывания. Пакет веб-развертывания представляет собой .zip файл. Он содержит все, что требуется службам IIS и веб-развертыванию для повторного создания веб-приложения, в том числе:

  • Скомпилированные выходные данные веб-приложения, включая содержимое, файлы ресурсов, файлы конфигурации, javaScript и ресурсы каскадных таблиц стилей (CSS) и т. д.
  • Сборки для проекта веб-приложения и любых проектов, на которые ссылается решение.
  • Скрипты SQL для создания всех баз данных, развертываемых с помощью веб-приложения.

После создания пакета веб-развертывания его можно опубликовать на веб-сервере IIS различными способами. Например, вы можете развернуть его удаленно, нацелив службу удаленного агента веб-развертывания или обработчик веб-развертывания на целевом веб-сервере, или с помощью диспетчера IIS можно вручную импортировать пакет на целевом веб-сервере. Дополнительные сведения об этих подходах к развертыванию см. в разделе Выбор правильного подхода к веб-развертыванию.

Как работает процесс сборки?

Здесь показано, что происходит при сборке и упаковке проекта веб-приложения:

Что происходит при сборке и упаковке проекта веб-приложения.

При сборке проекта веб-приложения процесс сборки создает файл с именем [имя проекта].SourceManifest.xml. Вместе с файлом проекта и выходными данными сборки этот файл .SourceManifest.xml сообщает web Deploy, что ему нужно включить в пакет веб-развертывания. Используя эти входные данные, веб-развертывание создает пакет веб-развертывания с именем [имя проекта].zip.

Наряду с пакетом веб-развертывания процесс сборки создает два файла, которые могут помочь вам использовать пакет:

  • Файл .deploy.cmd содержит набор параметризованных команд веб-развертывания (MSDeploy.exe), которые публикуют пакет веб-развертывания на удаленном веб-сервере IIS. Запуск файла .deploy.cmd с соответствующими параметрами обычно обеспечивает более быструю и простую альтернативу созданию команд MSDeploy.exe вручную.
  • Файл SetParameters.xml предоставляет набор значений параметров для команды MSDeploy.exe. К этим значениям относятся такие свойства, как имя веб-приложения IIS, в котором требуется развернуть пакет, значения конечных точек службы и строки подключения, определенные в файлеweb.config , и все значения свойств развертывания, определенные на страницах свойств проекта.

Файл SetParameters.xml является ключом к управлению процессом развертывания. Этот файл создается динамически в соответствии с содержимым проекта веб-приложения. Например, при добавлении строки подключения в файл web.config процесс сборки автоматически обнаружит строку подключения, соответствующим образом параметризует развертывание и создаст запись в файлеSetParameters.xml , чтобы вы могли изменить строку подключения в процессе развертывания. В следующем разделе Настройка параметров для развертывания веб-пакета подробно описывается роль этого файла и описываются различные способы его изменения во время сборки и развертывания.

Примечание

В Visual Studio 2010 WPP не поддерживает предварительную компиляцию страниц в веб-приложении перед упаковкой. В следующей версии Visual Studio и WPP будет включена возможность предварительной компиляции веб-приложения в качестве варианта упаковки.

Заключение

В этом разделе представлен обзор процесса сборки и упаковки для проектов веб-приложений в Visual Studio 2010. В нем описано, как WPP позволяет вызывать команды веб-развертывания из MSBuild, а также объясняется, как работает процесс сборки и упаковки.

После создания пакета веб-развертывания необходимо развернуть его. Дополнительные сведения об этом см. в разделах Настройка параметров для развертывания веб-пакетов и Развертывание веб-пакетов.

Дополнительные материалы

В следующих разделах этого руководства , Настройка параметров для развертывания веб-пакетов и Развертывание веб-пакетов, содержатся рекомендации по использованию созданного веб-пакета. В заключительном руководстве этой серии Advanced Enterprise Web Deployment (Расширенное корпоративное веб-развертывание) содержатся рекомендации по настройке и устранению неполадок процесса упаковки.

Более подробное введение в файлы проекта и WPP см. в статье Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.