Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как собирать подробные сведения о процессе упаковки с помощью свойства EnablePackageProcessLoggingAndAssert в microsoft Build Engine (MSBuild).
Если для свойства EnablePackageProcessLoggingAndAssert задано значение true, MSBuild будет:
- Добавьте дополнительные сведения о процессе упаковки в журналы сборки.
- Регистрировать ошибки при определенных условиях, например, если в списке пакетов находятся повторяющиеся файлы.
- Создайте каталог журнала в папке ProjectName_Package и используйте его для записи сведений о файлах, которые вы упаковывают.
Если процесс упаковки завершается ошибкой, или пакеты веб-развертывания не содержат ожидаемых файлов, эти сведения можно использовать для устранения неполадок процесса и выявления ошибок.
Замечание
Свойство EnablePackageProcessLoggingAndAssert работает только в том случае, если вы создаете проект с помощью конфигурации отладки . Свойство игнорируется в других конфигурациях.
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию предприятия вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения — решение Contact Manager— для представления веб-приложения с реалистичным уровнем сложности, включая приложение MVC 3 ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.
Метод развертывания в центре этих учебников основан на подходе к разделенному файлу проекта, описанному в разделе "Общие сведения о файле проекта", в котором процесс сборки управляется двумя файлами проекта — одним из них содержит инструкции по сборке, которые применяются к каждой целевой среде, а также один из них содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется в файл проекта, не зависящем от среды, чтобы сформировать полный набор инструкций по сборке.
Общие сведения о свойстве EnablePackageProcessLoggingAndAssert
Создание и упаковка проектов веб-приложений описывает, как конвейер веб-публикации (WPP) предоставляет набор целевых объектов MSBuild, которые расширяют функциональные возможности MSBuild и позволяют интегрировать его со средством веб-развертывания службы IIS (Web Deploy). При упаковке проекта веб-приложения вы вызываете цели WPP.
Многие из этих целевых объектов WPP включают условную логику, которая регистрирует дополнительные сведения, если для свойства EnablePackageProcessLoggingAndAssert задано значение true. Например, если просмотреть целевой объект пакета , можно увидеть, что он создает дополнительный каталог журналов и записывает список файлов в текстовый файл, если EnablePackageProcessLoggingAndAssert равно true.
<Target Name="Package"
Condition="$(_CreatePackage)"
DependsOnTargets="$(PackageDependsOn)">
<!--Log the information Set $(EnablePackageProcessLoggingAndAssert) to True
if you want to see this information-->
<MakeDir Condition="$(EnablePackageProcessLoggingAndAssert) And
!Exists('$(PackageLogDir)')"
Directories="$(PackageLogDir)" />
<WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
Encoding="utf-8"
File="$(PackageLogDir)\Prepackage.txt"
Lines="@(FilesForPackagingFromProject->'
From:%(Identity)
DestinationRelativePath:%(DestinationRelativePath)
Exclude:%(Exclude)
FromTarget:%(FromTarget)
Category:%(Category)
ProjectFileType:%(ProjectFileType)')"
Overwrite="True" />
Замечание
Целевые объекты WPP определяются в файле Microsoft.Web.Publishing.targets в папке %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web. Этот файл можно открыть и просмотреть целевые объекты в Visual Studio 2010 или любом редакторе XML. Не изменяйте содержимое файла.
Включение дополнительного ведения журнала
Значение свойства EnablePackageProcessLoggingAndAssert можно указать различными способами в зависимости от способа сборки проекта.
При сборке проекта из командной строки можно указать значение для свойства EnablePackageProcessLoggingAndAssert в качестве аргумента командной строки:
MSBuild.exe /t:Build
/p:Configuration=DEBUG
/p:DeployOnBuild=true
/p:DeployTarget=Package
/p:EnablePackageProcessLoggingAndAssert=true
[Your project].csproj
Если для создания проектов используется пользовательский файл проекта, можно включить значение EnablePackageProcessLoggingAndAssert в атрибут Properties задачи MSBuild :
<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
<MSBuild Projects="@(ProjectsToBuild)"
Properties="OutDir=$(OutputRoot);
Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
EnablePackageProcessLoggingAndAssert=true"
Targets="Build" />
</Target>
Если для создания проектов используется определение сборки Team Foundation Server (TFS), можно указать значение свойства EnablePackageProcessLoggingAndAssert в строке аргументов MSBuild :
Замечание
Дополнительные сведения о создании и настройке определений сборки см. в статье "Создание определения сборки, поддерживающее развертывание".
Кроме того, если вы хотите включить пакет в каждую сборку, можно изменить файл проекта веб-приложения, чтобы задать для свойства EnablePackageProcessLoggingAndAssertзначение true. Необходимо добавить свойство в первый элемент PropertyGroup в CSPROJ или VBPROJ-файле.
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="...">
<PropertyGroup>
<EnablePackageProcessLoggingAndAssert
Condition=" '$(EnablePackageProcessLoggingAndAssert)' == '' ">
true
</EnablePackageProcessLoggingAndAssert>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
Просмотр файлов журнала
При сборке и пакете проекта веб-приложения с параметром EnablePackageProcessLoggingAndAssertзадано значение true, MSBuild создает дополнительную папку с именем Log в папке ProjectName_Package. Папка журнала содержит различные файлы:
Список файлов, которые вы видите, зависит от вещей в проекте и процессе сборки. Однако эти файлы обычно используются для записи списка файлов, которые WPP собирает для упаковки на различных этапах процесса:
В файлеPreExcludePipelineCollectFilesPhaseFileList.txt перечислены файлы, собираемые MSBuild для упаковки до удаления всех файлов, указанных для исключения.
ФайлAfterExcludeFilesFilesList.txt содержит измененный список файлов после удаления всех файлов, указанных для исключения.
Замечание
Дополнительные сведения об исключении файлов и папок из процесса упаковки см. в разделе "Исключение файлов и папок из развертывания".
В файле AfterTransformWebConfig.txt перечислены файлы, собранные для упаковки после выполнения любых Web.config преобразований. В этом списке все файлы преобразования, относящиеся к конфигурации Web.config, такие как Web.Debug.config и Web.Release.config, исключены из списка файлов для упаковки. На их месте включен один преобразованный Web.config.
Файл PostAutoParameterizationWebConfigConnectionStrings.txt содержит список файлов после параметризации строк подключения в файлеWeb.config . Это процесс, позволяющий заменить строки подключения правильными параметрами целевой среды при развертывании пакета.
ФайлPrepackage.txt содержит готовый список предварительной сборки файлов, которые будут включены в пакет.
Замечание
Имена дополнительных файлов журнала обычно соответствуют целевым объектам WPP. Эти целевые объекты можно просмотреть, проверив файл Microsoft.Web.Publishing.targets в папке %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web.
Если содержимое веб-пакета не является ожидаемым, просмотр этих файлов может быть полезным способом определить, в какой момент в процессе все пошло не так.
Conclusion
В этом разделе описано, как использовать свойство EnablePackageProcessLoggingAndAssert в MSBuild для устранения неполадок процесса упаковки. Он объяснил различные способы предоставления значения свойства процессу сборки, и он описал дополнительные сведения, записанные при установке свойства на значение true.
Дальнейшее чтение
Дополнительные сведения об использовании пользовательских файлов проекта MSBuild для управления процессом развертывания см. в разделе "Общие сведения о файле проекта " и "Общие сведения о процессе сборки". Дополнительные сведения о WPP и управлении процессом упаковки см. в разделе "Создание и упаковка проектов веб-приложений". Инструкции по исключению определенных файлов и папок из пакетов веб-развертывания см. в разделе "Исключение файлов и папок из развертывания".