可自定义的 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,则清除目标(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(可重写)