Поделиться через


Настраиваемые цели 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

Это пустая цель. Вставьте свою задачу в этот целевой объект для создания документации во время процесса построения.

Переопределение целей для запуска собственных заданий

Создаваемый код задачи должен комбинироваться с целевым объектом. Дополнительные сведения см. в разделе Написание задач. Чтобы создать пользовательскую задачу, необходимо выполнить приведенные далее действия.

  1. Напишите код задачи и убедитесь, что построенные двоичные файлы доступны на компьютере построения: либо в файле TfsBuild.proj задан путь к системе управления версиями, либо эти двоичные файлы доступны на самом компьютере построения.

    Примечание

    Заносить код задачи в систему управления версиями не обязательно. Тем не менее, это признак хорошего тона в программировании.

  2. Зарегистрируйте пользовательскую задачу в файле TfsBuild.proj, объявив ее с помощью элемента UsingTask MSBuild.

    Дополнительные сведения см. в разделе Элемент UsingTask (MSBuild).

    <UsingTask 
        TaskName="MyTasks.SimpleTask" 
        AssemblyName="MyAssembly.Build.Tasks"/>
    
  3. Запустите задачу, вставив ее в нужный целевой объект в файле TfsBuild.proj.

    <Target Name="BeforeGet">
        <SimpleTask />
    </Target>
    

    Примечание

    При добавлении этого тега будут выведены предупреждения схемы XML.Эти предупреждения можно спокойно игнорировать.

  4. Разверните библиотеку 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

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace

  8. InitializeBuild

  9. BeforeGet

  10. CoreGet

  11. AfterGet

  12. BeforeLabel

  13. CoreLabel

  14. AfterLabel

  15. BeforeClean

  16. CoreCleanCompilationOutput

  17. AfterClean

  18. BeforeCompile

  19. CoreCompile (для каждой комбинации платформы и конфигурации)

  20. BeforeCompileConfiguration

  21. CoreCompileConfiguration (для каждого решения, участвующего в построении)

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. CoreTest (для каждой комбинации платформы и конфигурации)

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterInitializeWorkspace

  8. BeforeClean

  9. CoreClean

  10. AfterClean

  11. InitializeBuild

  12. BeforeGet

  13. CoreGet

  14. AfterGet

  15. BeforeLabel

  16. CoreLabel

  17. AfterLabel

  18. BeforeCompile

  19. CoreCompile (для каждой комбинации платформы и конфигурации)

  20. BeforeCompileConfiguration

  21. CoreCompileConfiguration (для каждого решения, участвующего в построении)

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. CoreTest (для каждой комбинации платформы и конфигурации)

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

Ниже приведен список целей, выполняемых при возникновении ошибки во время выполнения цели CoreCompile. Целевые объекты, которые можно переопределять, выделены полужирным шрифтом.

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild

  5. CoreDropBuild

  6. AfterDropBuild

  7. BeforeCreateWorkItem

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak

См. также

Основные понятия

Описание файлов конфигурации Team Foundation Build

Настраиваемые свойства построения Team Foundation