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

Джейсон Ли

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

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

В Visual Studio 2010 процесс сборки и развертывания для проектов веб-приложений поддерживается WPP. WPP предоставляет набор целевых объектов Microsoft Build Engine (MSBuild), которые расширяют функциональные возможности MSBuild и позволяют интегрировать его с веб-развертыванием. В Visual Studio эта расширенная функциональность отображается на страницах свойств для проекта веб-приложения. Страница конфигурации пакета/публикации Web вместе со страницей конфигурации пакета/публикации 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, которые вызывают веб-развертывание для выполнения различных задач развертывания.

Чтобы понять, как используются эти дополнительные целевые объекты, в примере решения Contact Manager откройте файл 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 будет выполнять цель Package после сборки проекта.

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

Замечание

Чтобы просмотреть файл проекта (например, ContactManager.Mvc.csproj) в Visual Studio 2010, сначала необходимо выгрузить проект из решения. В окне обозревателя решений щелкните правой кнопкой мыши узел проекта и выберите команду "Выгрузить проект". Снова щелкните узел проекта правой кнопкой мыши и выберите команду "Изменить[файл проекта]". Файл проекта откроется в необработанной XML-форме. Не забудьте перезагрузить проект после завершения.
Дополнительные сведения о целевых объектах MSBuild, задачах и инструкциях импорта см. в разделе "Общие сведения о файле проекта". Более полное введение в файлы проектов и WPP смотрите в книге "Внутри ядра сборки Microsoft: использование MSBuild и Team Foundation Build", авторы Сайед Ибрагим Хашими и Уильям Бартоломью, ISBN: 978-0-7356-4524-0.

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

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

  • Скомпилированные выходные данные веб-приложения, включая содержимое, файлы ресурсов, файлы конфигурации, ресурсы 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 будет включена возможность предварительной компиляции веб-приложения в качестве варианта упаковки.

Conclusion

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

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

Дальнейшее чтение

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

Более полное введение в файлы проектов и WPP смотрите в книге "Внутри ядра сборки Microsoft: использование MSBuild и Team Foundation Build", авторы Сайед Ибрагим Хашими и Уильям Бартоломью, ISBN: 978-0-7356-4524-0.