Настраиваемые цели Team Foundation Build
Цели MSBuild определяют, как выполняется построение проекта MSBuild. Файл Microsoft.TeamFoundation.Build.targets определяет иерархию целей и набор предопределенных заданий MSBuild и целей для Team Foundation Build, используемых для всех типов Team Foundation Build. Определения построений используют файл TfsBuild.proj. Файл проекта может быть связан либо с одним определением построения, либо с несколькими определениями. TfsBuild.proj импортирует файл Microsoft.TeamFoundation.Build.targets и предоставляет значения различных свойств и групп элементов. Вы можете настроить файл TfsBuild.proj, перекрыв некоторые цели, являющиеся точками расширения иерархии. Файл целей находится в каталоге <корневой каталог>:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild на агенте построения.
Важно!
Не изменяйте файл Microsoft.TeamFoundation.Build.targets.
Дополнительную информацию о целях в MSBuild см. в разделе Цели MSBuild.
Цели могут настраиваться с помощью заданий
Задания содержатся в целях. В задачах предоставляется код, выполняющийся во время процесса построения. В следующей таблице приведены все цели Team Foundation Build, определенные для расширяемости. Вставьте свои задачи в один из этих целевых объектов в зависимости от того, на каком этапе процесса построения необходимо выполнять пользовательские задачи.
Примечание
Другие цели переопределять не рекомендуется.
Целевое имя |
Описание |
---|---|
BeforeEndToEndIteration |
Вставьте свою задачу в этот целевой объект, чтобы пользовательские задачи выполнялись в самом начале процесса построения. |
AfterEndToEndIteration |
Вставьте свое задание в этот целевой объект, чтобы оно запускалось в конце процесса построения. |
BeforeInitializeWorkspace |
Вставьте свое задание в этот целевой объект, чтобы оно запускалось перед инициализацией рабочей области. |
AfterInitializeWorkspace |
Вставьте свое задание в этот целевой объект, чтобы оно запускалось после инициализации рабочей области. |
BuildNumberOverrideTarget |
Вставьте свое задание в этот целевой объект, чтобы настроить номер построения или свойства каталога размещения. Написанное вами задание должно создавать выходное свойство с именем BuildNumber. |
BeforeClean |
Вызывается перед попыткой очистки. Вставьте свое задание в этот целевой объект, чтобы оно запускалось перед очисткой. |
AfterClean |
Вызывается после завершения очистки. Вставьте свое задание в этот целевой объект, чтобы оно запускалось после очистки. |
BeforeGet |
Вызывается перед извлечением исходных текстов из системы управления версиями. Вставьте свое задание в этот целевой объект, чтобы оно запускалось перед извлечением исходных текстов. |
AfterGet |
Вызывается после извлечения исходных текстов. Вставьте свое задание в этот целевой объект, чтобы оно запустилось после извлечения исходных текстов. |
BeforeLabel |
Вызывается перед пометкой исходных текстов. Вставьте свою задачу в этот целевой объект, чтобы пользовательские задачи выполнялись перед целевым объектом Label. |
AfterLabel |
Вызывается после завершения пометки. Вставьте свою задачу в этот целевой объект, чтобы пользовательские задачи выполнялись после целевого объекта Label. |
BeforeCompile |
Вызывается перед началом компиляции. Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед компиляцией исходных кодов. |
BeforeCompileConfiguration |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед компиляцией отдельной конфигурации. |
BeforeCompileSolution |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед компиляцией отдельного решения. |
AfterCompileSolution |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось после компиляции отдельного решения. |
AfterCompileConfiguration |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось после компиляции отдельной конфигурации. |
AfterCompile |
Вызывается после завершения компиляции. Вставьте свое задание в этот целевой объект, чтобы оно запустилось после завершения компиляции исходных кодов. |
BeforeGetChangesetsAndUpdateWorkItems |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед сопоставлением наборов изменений и обновлением рабочих элементов. |
AfterGetChangesetsAndUpdateWorkItems |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось после сопоставления наборов изменений и обновления рабочих элементов. |
BeforeTest |
Вызывается перед запуском тестов. Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед целью Test. |
BeforeTestConfiguration |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед тестированием отдельной конфигурации. |
AfterTestConfiguration |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось после тестирования отдельной конфигурации. |
AfterTest |
Вызывается после завершения тестирования. Вставьте свою задачу в этот целевой объект, чтобы пользовательские задачи выполнялись после целевого объекта Test. |
BeforeDropBuild |
Вызывается перед сохранением готовых двоичных файлов, файлов журналов построения и тестовых результатов в каталог размещения сборок на выпускающем сервере. Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед сохранением файлов сборки в каталог размещения. |
AfterDropBuild |
Вызывается после размещения готовых двоичных файлов и тестовых результатов на выпускающем сервере. Вставьте свое задание в этот целевой объект, чтобы оно запустилось после сохранения файлов в каталог размещения. |
BeforeCreateWorkItem |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось перед созданием рабочего элемента. |
AfterCreateWorkItem |
Вставьте свое задание в этот целевой объект, чтобы оно запустилось после создания рабочего элемента. |
BeforeOnBuildBreak |
Вызывается перед созданием рабочего элемента в результате прерывания построения. Вставьте свою задачу в этот целевой объект, чтобы пользовательские задачи выполнялись перед целевым объектом BuildBreak. |
AfterOnBuildBreak |
Вызывается после создания рабочего элемента в результате прерывания построения. Вставьте свое задание в этот целевой объект, чтобы оно запустилось после цели BuildBreak. |
GenerateDocumentation |
Это пустая цель. Вставьте свою задачу в этот целевой объект для создания документации во время процесса построения. |
Переопределение целей для запуска собственных заданий
Создаваемый код задачи должен комбинироваться с целевым объектом. Дополнительные сведения см. в разделе Написание задач. Чтобы создать пользовательскую задачу, необходимо выполнить приведенные далее действия.
Напишите код задачи и убедитесь, что построенные двоичные файлы доступны на компьютере построения: либо в файле TfsBuild.proj задан путь к системе управления версиями, либо эти двоичные файлы доступны на самом компьютере построения.
Примечание
Заносить код задачи в систему управления версиями не обязательно. Тем не менее, это признак хорошего тона в программировании.
Зарегистрируйте пользовательскую задачу в файле TfsBuild.proj, объявив ее с помощью элемента UsingTask MSBuild.
Дополнительные сведения см. в разделе Элемент UsingTask (MSBuild).
<UsingTask TaskName="MyTasks.SimpleTask" AssemblyName="MyAssembly.Build.Tasks"/>
Запустите задачу, вставив ее в нужный целевой объект в файле TfsBuild.proj.
<Target Name="BeforeGet"> <SimpleTask /> </Target>
Примечание
При добавлении этого тега будут выведены предупреждения схемы XML.Эти предупреждения можно спокойно игнорировать.
Разверните библиотеку DLL, содержащую пользовательскую задачу, на компьютере построения.
Важно!
Изменение повлияет на все определения построений, связанные с настраиваемым файлом TfsBuild.proj.
Порядок выполнения целей
Порядок выполнения целей зависит от значения свойства CleanCompilationOutputOnly. Если свойство CleanCompilationOutputOnly равно true, цели очистки (BeforeClean, CoreClean и AfterClean) выполняются после целей загрузки и пометки (BeforeGet, CoreGet, AfterGet, BeforeLabel, CoreLabel и AfterLabel). Если свойство CleanCompilationOutputOnly равно false, цели очистки выполняются перед целями загрузки и пометки. Если свойство CleanCompilationOutputOnly равно true, во время выполнения цели CoreClean из каталога исходных текстов удаляются только промежуточные сборки. Если это свойство установлено равным false, весь исходный каталог очищается во время выполнения цели CoreClean.
В следующей таблице приведен упорядоченный список целевых объектов, выполняемых в зависимости от того, равно свойство CleanCompilationOutputOnly true или false. Целевые объекты, которые можно переопределять, выделены полужирным шрифтом.
CleanCompilationOutputOnly = true |
CleanCompilationOutputOnly = false |
---|---|
|
|
Ниже приведен список целей, выполняемых при возникновении ошибки во время выполнения цели CoreCompile. Целевые объекты, которые можно переопределять, выделены полужирным шрифтом.
SetBuildBreakProperties
BeforeOnBuildBreak
GetChangesetsOnBuildBreak
BeforeDropBuild
CoreDropBuild
AfterDropBuild
BeforeCreateWorkItem
CoreCreateWorkItem
AfterCreateWorkItem
CoreOnBuildBreak
AfterOnBuildBreak