可自定义的 Team Foundation Build 目标

更新:2007 年 11 月

MSBuild 目标定义了如何生成 MSBuild 项目。Microsoft.TeamFoundation.Build.targets 文件为 Team Foundation Build 定义了用于所有 Team Foundation Build 类型的目标层次结构和一组预定义的 MSBuild 任务和目标。生成定义包括名为 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

在编译完成之后调用。将任务插入到此目标中,以在编译代码文件之后运行自定义任务。有关示例,请参见演练:配置 Team Build 以生成 Visual Studio 安装项目

BeforeGetChangesetsAndUpdateWorkItems

将任务插入到此目标中,以便在关联变更集和更新工作项之前运行自定义任务。

AfterGetChangesetsAndUpdateWorkItems

将任务插入到此目标中,以便在关联变更集和更新工作项之后运行自定义任务。

BeforeTest

在运行测试之前调用。将任务插入到此目标中,以在 Test 目标之前运行自定义任务。

BeforeTestConfiguration

将任务插入到此目标中,以便在测试个别配置之前运行自定义任务。

AfterTestConfiguration

将任务插入到此目标中,以便在测试个别配置之后运行自定义任务。

AfterTest

在测试完成之后调用。将任务插入到此目标中,以在 Test 目标之后运行自定义任务。

BeforeDropBuild

在将生成的二进制文件、生成日志文件和测试结果保存到发布服务器上的生成放置目录之前调用。将任务插入到此目标中,以在将生成的文件保存到放置目录之前运行自定义任务。

AfterDropBuild

在将生成的二进制文件、生成日志文件和测试结果放置到发布服务器之后调用。将任务插入到此目标中,以在将生成的文件保存到放置目录之后运行自定义任务。

BeforeCreateWorkItem

将任务插入到此目标中,以便在创建工作项之前运行自定义任务。

AfterCreateWorkItem

将任务插入到此目标中,以便在创建工作项之后运行自定义任务。

BeforeOnBuildBreak

在创建工作项之前作为生成中断的结果来调用。将任务插入到此目标中,以在 BuildBreak 目标之前运行自定义任务。

AfterOnBuildBreak

在创建工作项之后作为生成中断的结果来调用。将任务插入到此目标中,以在 BuildBreak 目标之后运行自定义任务。

GenerateDocumentation

这是一个空目标。将任务插入到此目标中,以便在生成过程中自动生成文档。

重写目标以运行自定义任务

编写的任务代码必须与目标代码成对,并通过在 TfsBuild.proj 文件中提供源代码管理路径或在生成计算机本身提供二进制文件,来确保生成的二进制文件在生成计算机上可用。还必须通过使用 UsingTaskMSBuild 元素声明自定义任务在 TfsBuild.proj 文件中注册该任务。有关更多信息,请参见 UsingTask 元素 (MSBuild)。最后,在生成计算机上部署包含自定义任务的 DLL。

重要说明:

与您自定义的 TfsBuild.proj 文件相关联的每个生成定义都会受到此更改的影响。

有关端到端实现自定义任务的示例,请参见演练:通过自定义任务自定义 Team Foundation Build

目标执行的顺序

目标的执行顺序取决于 CleanCompilationOutputOnly 属性的值。如果 CleanCompilationOutputOnly 为 true,则清除目标(BeforeCleanCoreCleanAfterClean)在获取目标和标记目标(BeforeGetCoreGetAfterGetBeforeLabelCoreLabelAfterLabel)后执行。如果 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. PackageBinaries(可重写)

  38. BeforeDropBuild(可重写)

  39. CoreDropBuild

  40. AfterDropBuild(可重写)

  41. 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. PackageBinaries(可重写)

  38. BeforeDropBuild(可重写)

  39. CoreDropBuild

  40. AfterDropBuild(可重写)

  41. 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 Build 属性

Team Foundation Build 任务