Настраиваемые цели Team Foundation Build
Обновлен: Ноябрь 2007
Цели 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 |
Вызывается после завершения компиляции. Вставьте свое задание в эту цель, чтобы оно запустилось после завершения компиляции исходных кодов. Пример см. в разделе Пошаговое руководство. Настройка команды построения для построения проекта установки в Visual Studio. |
BeforeGetChangesetsAndUpdateWorkItems |
Вставьте свое задание в эту цель, чтобы оно запустилось перед сопоставлением наборов изменений и обновлением рабочих элементов. |
AfterGetChangesetsAndUpdateWorkItems |
Вставьте свое задание в эту цель, чтобы оно запустилось после сопоставления наборов изменений и обновления рабочих элементов. |
BeforeTest |
Вызывается перед запуском тестов. Вставьте свое задание в эту цель, чтобы оно запустилось перед целью Test. |
BeforeTestConfiguration |
Вставьте свое задание в эту цель, чтобы оно запустилось перед тестированием отдельной конфигурации. |
AfterTestConfiguration |
Вставьте свое задание в эту цель, чтобы оно запустилось после тестирования отдельной конфигурации. |
AfterTest |
Вызывается после завершения тестирования. Вставьте свое задание в эту цель, чтобы оно запустилось после цели Test. |
BeforeDropBuild |
Вызывается перед сохранением готовых двоичных файлов, файлов журналов построения и тестовых результатов в каталог размещения сборок на выпускающем сервере. Вставьте свое задание в эту цель, чтобы оно запустилось перед сохранением файлов сборки в каталог размещения. |
AfterDropBuild |
Вызывается после размещения готовых двоичных файлов, файлов журналов построения и тестовых результатов на выпускающем сервере. Вставьте свое задание в эту цель, чтобы оно запустилось после сохранения файлов в каталог размещения. |
BeforeCreateWorkItem |
Вставьте свое задание в эту цель, чтобы оно запустилось перед созданием рабочего элемента. |
AfterCreateWorkItem |
Вставьте свое задание в эту цель, чтобы оно запустилось после создания рабочего элемента. |
BeforeOnBuildBreak |
Вызывается перед созданием рабочего элемента в результате прерывания построения. Вставьте свое задание в эту цель, чтобы оно запустилось перед целью BuildBreak. |
AfterOnBuildBreak |
Вызывается после создания рабочего элемента в результате прерывания построения. Вставьте свое задание в эту цель, чтобы оно запустилось после цели BuildBreak. |
GenerateDocumentation |
Это пустая цель. Вставьте свое задание в эту цель для автоматической генерации документации во время процесса построения. |
Переопределение целей для запуска собственных заданий
Написанный код задания должен соответствовать цели, и готовые двоичные файлы должны быть доступны на компьютере построения либо путем задания маршрута в системе управления версиями в файле TfsBuild.proj, либо сделав их доступными на самом компьютере построения. Необходимо также зарегистрировать собственное задание в файле TfsBuild.proj, объявив его с помощью элементаUsingTaskMSBuild. Дополнительные сведения см. в разделе Элемент UsingTask (MSBuild). Наконец, разместите DLL, содержащую собственное задание, на компьютере построения.
Важное примечание. |
---|
Изменение повлияет на все определения построений, связанные с измененным файлом TfsBuild.proj. |
Пример реализации собственного задания от начала до конца смотрите в разделе Пошаговое руководство. Расширение возможностей Team Foundation Build с помощью настраиваемых задач.
Порядок выполнения целей
Порядок выполнения целей зависит от значения свойства 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 (можно переопределить)
См. также
Задачи
Практическое руководство. Написание задачи
Основные понятия
Описание файлов конфигурации Team Foundation Build