对生成过程使用默认模板

利用默认模板(“TFVC”图标 TfvcTemplate.12.xaml 或 “Git”图标 GitTemplate.12.xaml),你可快速定义一个生成并测试代码的基本过程。 你可以选择控制 Team Foundation Build (TFBuild) 生成代码、运行测试以及运行其他过程(如脚本)的方式。

开始操作

  1. (可选)在你通过团队资源管理器主页(键盘: Ctrl + 0, H)创建新的生成定义前,请打开你要生成的解决方案,以便自动在**“项目”**框中指定它。

  2. 在**“团队资源管理器”中,确保连接到团队项目(键盘:Ctrl + 0, C),然后打开“生成”**页(键盘:Ctrl + 0, B)。

  3. 选择**“新生成定义”链接或选择一个生成,打开其上下文菜单,然后选择“编辑生成定义”**。

    提示

    如果出现 TF225001 错误消息,则配置生成控制器

  4. 默认情况下,已在**“过程”选项卡上的“生成过程模板”**下选中默认模板。

    默认模板生成过程

    警告

    你是否连接到 Visual Studio Online“Git”图标 上托管的 Git 团队项目?是否缺少“签出重写”“项目”参数?

    错误的 Git 默认模板中的参数

    请参见如何确保在 Visual Studio Online 上使用正确的默认 Git 生成过程模板?

  5. 使用本主题后面的信息完成那些可以提供您要放入此生成定义中的功能的相应字段。

  6. 完成**“过程”**选项卡上的字段后,指定其他选项卡上的生成过程选项。

    有关详细信息,请参阅创建或编辑生成定义

接下来你希望做什么?

  • 获取代码

  • 生成代码

    • 指定要生成的项目

    • 指定要生成的平台和配置

    • 指定生成选项

  • 测试代码并分析测试影响

  • 在生成过程中运行其他过程

  • 控制服务器运行生成的方式

    • 指定处理您的生成的生成代理

    • 指定生成代理时间限制

  • 控制生成结果

    • 指定生成输出位置

    • 使已完成生成的名称对您的团队有用

    • 从生成发布符号

    • 关联和创建工作项

    • 失败时创建工作项

    • 为源代码添加标签

  • 获取常见问题的答案

获取代码

可以设置一些选项来确定生成代理如何获取您在**“源设置”**选项卡上指定的源代码。

若希望...

然后设置此参数...

使用本指南…

指定是否在生成代理处理生成之前清理生成代理上的工作区或 Git 存储库

“TFVC”图标 TFVC:“清理工作区”

“Git”图标 Git:“干净的存储库”

选择“True”可在处理生成之前删除所有现有输出和源代码文件。 如果您希望编译过程能够尽可能详尽地发现生成过程中的问题,则使用此选项。

提示

如果生成过程不需要干净的工作区或存储库,则可通过将此参数值设置为“False”来大大减少运行此生成所需的时间。

如果你使用托管生成控制器,则该设置无效。 在此情况下,每次生成都会获得一个新的工作目录。

生成源代码的特定版本

“TFVC”图标 TFVC:“获取版本”

“Git”图标 Git:“签出重写”

TFVC:指定用于标识要生成的版本的 versionspec

Git:指定要签出的分支和提交 ID。

生成代码

可以使用 MSBuild 编译代码。

指定要生成的项目

在**“生成过程参数”表中的“生成”下的“项目”**框中,可以指定一个或多个要生成的解决方案或代码项目。 您必须指定至少一个解决方案或项目。

如果正在生成多个相关项目,通常应将它们添加到单一解决方案,并在**“项目”**单元格中指定该解决方案,而不是分别列出每个项目。

在**“项目”框中,可选择省略号按钮“(...)”打开并使用“解决方案/项目”**对话框来指定要生成的解决方案或项目。

若要手动填写 TFVC 团队项目的**“项目”**框,可指定要生成的每个项目或解决方案的完整版本控制路径。 使用逗号分隔每个值,如以下示例所示:

$/Features/FeatureA/Server/All Server Projects.sln, $/Features/FeatureA/Client/All Client Projects.sln

重要

如果使用 TFVC,请确保每个项目或解决方案的路径是生成定义的“源设置”选项卡上所列的某个“源代码管理文件夹”值的子级。如果使用 Git,请确保项目或解决方案位于正在生成的分支中的 Git 库中。

指定要生成的平台和配置

在**“配置”**框中,可以指定要生成哪些平台和配置。 例如,您可以通过在此框中包含“Release|x86”,来指定此生成应只生成 32 位版本 C++ 项目的发布配置。

提示

如果您的基本代码较大,则可以通过只生成所需配置和平台来显著提高生成处理速度。

如果将**“配置”**框保留为空,则将生成每个解决方案或项目中定义的默认配置和平台。

在**“配置”框中,可选择省略号按钮(“...”)打开并使用“配置”**对话框来指定要生成的项。 也可以手动指定这些项。

**“配置”**框中的每个配置应采用以下形式:

配置|平台

必须替换以下占位符:

  • 配置是一个值,如调试、发布或所有配置。

  • 平台是一个值,如 Win32、x86、x64 或任何 CPU。

列表中的配置必须以逗号分隔。

例如,如果要为 C# 项目生成“调试”和“发布”配置,您应在**“配置”**框中指定“调试|任意 CPU”、“发布|任意 CPU”。

配置和平台所使用的标记必须与解决方案属性或代码项目属性中设置的标记相符。 如果它们不相符,则在生成完成时可能会出现意外结果。

备注

如果生成的是单个代码项目而非解决方案文件,并且您希望指定“任意 CPU”作为平台,则应将其指定为“AnyCPU”而不是“任意 CPU”。

指定生成选项

可以控制多个生成选项。

若希望...

然后设置此参数...

使用本指南…

控制是否重新生成

“生成”“干净的生成”

若要重新生成代码项目中的所有代码,请将其设置为“True”。 这与 MSBuild /target:clean 等效。 除非您还将“干净的存储库”设置为“False”,否则此选项没有实用效果。

提示

可以通过将此选项设置为“False”来大大减少生成大规模基本代码所需的时间。

对照层关系图验证您的代码

“生成”“高级”“MSBuild 参数”

在此参数值中包括以下字符串:/p:ValidateArchitecture=true。

有关详细信息,请参阅用层关系图验证代码

指定要传递到 MS Build 的命令行参数

“生成”“高级”“MSBuild 参数”

如果生成过程需要将参数传递到 MSBuild,则在“MSBuild 参数”参数中输入这些参数。 有关详细信息,请参阅MSBuild 命令行参考

指定用于处理生成的 MSBuild 版本的位数

“生成”“高级”“MSBuild 平台”

指定下列值之一:

  • 如果你想以 Team Foundation Build Service(安装在生成代理上)的相同 CPU 位数来运行 MSBuild,请指定“自动”。

  • 指定“X86”可通过始终使用 32 位版本的 MSBuild 来处理此生成。

    由于 Visual Studio 作为 32 位应用程序运行,因此在运行 64 位版本的 Team Foundation Build Service 的生成代理处理您的生成时,可能会遇到问题。 通过指定“X86”,您可能能够解决这些类型的问题。

如果指定此值,您应确保由 64 位生成计算机托管的生成代理来处理您的生成(例如,通过使用本主题中前面所述的标记)。 否则,生成将失败。

运行其他过程

可以在生成过程中运行其他过程。

执行代码分析

若要在生成过程中查找常见缺陷,您可以分析您的代码。 在高级生成参数中设置**“执行代码分析”**参数。

  • 选择**“已配置”**可分析已启用此功能的每个代码项目。

  • 选择**“总是”**可分析每个代码项目,无论代码项目中是否启用了此功能。

  • 选择**“从不”**可跳过代码分析。

有关更多信息,请参见下列主题之一:

控制服务器运行生成的方式

您可以控制生成服务器运行生成的方式

指定处理您的生成的生成代理

若要指定使用哪些生成代理来处理生成,请展开**“高级”节点,再展开“代理设置”**节点,然后指定以下参数的值:

  • 名称筛选器:您可以通过在此字段中键入代理名称,来筛选用于处理此生成定义的生成代理。 还可以使用 *? 通配符指定名称集。 例如,可以指定 CI* 来指定名称以字符 CI 开始的任何代理。 符合此条件的代理包括 CI、CI1 或 CI_Agent2。

  • 标记筛选器:指定一个或多个标记,以确保只有符合标记的生成代理将运行此生成。 出于特定目的,通常您会对某些生成代理应用标记以保留这些代理。 例如,在生成计算机上设置一个旨在处理封闭签入生成的生成代理。 将封闭的标记应用到此生成代理。 最后,将封闭的标记应用到生成定义,以便对仅由该代理处理的定义也使用封闭的标记进行标记。 若要指定标记,可选择省略号按钮(“...”)。

    备注

    可用于处理此生成的生成代理池由您为此生成定义指定的生成控制器确定。若要修改生成控制器,请选择“生成默认值”选项卡,打开“生成控制器”菜单,然后选择生成控制器。

  • 标记比较运算符:在菜单上选择下列值之一:

    • MatchExactly:如果您只希望由包含您在**“标记筛选器”**框中指定的同一标记集的生成代理处理此生成定义,请选择此值。 如果您未指定任何标记,则任何代理均可处理此生成定义。

      提示

      通过选择“MatchExactly”,将可用于此生成定义的代理限制为包含与“标记筛选器”字段中的标记集完全相同的标记集的代理。

    • MatchAtLeast:如果您只希望由至少包含您在**“标记筛选器”**框中指定的同一标记集的任何生成代理处理此生成定义,请选择此值。 如果您未指定任何标记,则只有不包含任何标记的代理才可处理此生成定义。

指定生成代理时间限制

若要指定时间限制,请展开**“高级”节点,再展开“代理设置”**节点,然后在下表中指定参数。

若希望...

然后设置此参数...

使用本指南…

指定允许生成代理处理生成的最长时间

最长执行时间

按照 hh:mm:ss 格式输入时间跨度值。 例如,如果指定值 04:30:15,并且在 4 小时 30 分钟 15 秒之后未完成生成代理,则该生成将由于超时错误而失败。 如果想要生成代理处理生成时不受时间限制,则指定值 00:00:00。

指定允许向生成代理指派生成请求的最长时间

最长等待时间

按照 hh:mm:ss 格式输入时间跨度值。 例如,如果指定值 01:30:45,并且在 1 小时 30 分钟 45 秒之后尚未将生成指派给生成代理,则该生成将由于超时错误而失败。 如果您希望生成控制器在查找用于处理此生成定义的生成代理时不受时间限制,请指定值 00:00:00。

控制生成结果

指定生成输出位置

若要控制 TFBuild 将生成输出放置到的位置,请选择以下选项:

  • SingleFolder - 将所有生成输出文件一起放置到放置文件夹中。

  • PerProject - 将生成输出分组为您已经在项目框中指定的针对每个解决方案或代码项目的放置文件夹子文件夹。

  • AsConfigured - 将二进制文件保留在生成代理源文件夹中,该文件夹将组织到您在开发计算机上的 Visual Studio 中生成代码时所看到的相同子文件夹结构中。 此结构是在代码项目中定义的。

    如果使用此选项,则 TFBuild 不会将输出复制到放置文件夹。 相反,您可以编写脚本以将输出复制到由 TF_BUILD_BINARIESDIRECTORY 指定的位置,以便将它们放入暂存位置。 请参阅后期生成或后期测试脚本

使已完成生成的名称对您的团队有用

您和您的团队可以使用**“高级”“生成号格式”**将有用的数据加载到每个已完成生成的名称中。 有关此参数的有效值,请参阅使用生成号为已完成的生成指定有意义的名称

从生成发布符号

指定**“发布符号的路径”**参数来为符号数据建立索引并发布符号数据以启用历史调试等功能。 请参阅为符号数据编制索引并发布

将变更集、提交与工作项相关联

生成过程会自动将每个已完成的生成与已转为代码的所有变更集或提交及其关联的工作项相链接。 您无法禁用此行为,但在**“高级”下,您可以通过选择“True”“False”来决定是否希望“使用生成号更新工作项”**。

生成过程是如何确定何时将变更集、提交与工作项相关联的?

失败时创建工作项

对于**“高级”“失败时创建工作项”,在生成失败时,如果您希望生成过程创建 Bug 并将其分配给“TFVC”图标 签入 TFVC 变更集“Git”图标 推送 Git 提交的人员,请选择“True”**。

为源代码添加标签

对于 “TFVC”图标“TF 版本控制”“标记源”,如果您希望使用标签自动标记每个源代码文件,以使您的团队能轻松确定每个文件的哪个版本包含在已完成的生成中,请选择**“True”**。 此设置不适用于 “Git”图标 Git 团队项目。

有关 TFBuild 如何确定需要标注的版本的详情,请参阅生成有何好处?

问题解答

如何确保在 Visual Studio Online 上使用正确的默认 Git 生成过程模板?

你是否连接到 Visual Studio Online“Git”图标 上托管的 Git 团队项目? 是否缺少**“签出重写”“项目”**参数?

在显示详细信息时是否会出现**“默认模板(GitTemplate.xaml)”**?

错误的 Git 默认模板

如果出现,则选择**“GitTemplate.12.xaml”。 在执行此操作之后,“签出重写”参数和“项目”**参数中的浏览按钮将会显示。

正确的 Git 默认模板

问:生成过程是如何确定何时将变更集、提交与工作项相关联的?

**答:**每个生成定义均维护自己的记录,其中包含等待与下一个已完成的生成相关联的变更集 (TFVC)、变更集 (Git) 和工作项。

例如,变更集 382 由生成 A 和生成 B 生成。 生成 A 已排队,并已成功完成。 生成 B 已排队,并失败。 变更集 382 现在与生成 A 的成功完成生成和生成 B 的失败完成生成相链接。变更集 382 将不会与生成 A 的下一个已完成生成相链接,但它将与生成 B 的下一个已完成生成相链接。

有关 TFBuild 如何确定需要关联的版本的详情,请参阅生成有何好处?

问:我需要生成过程以执行其他操作。如何对其自定义?

答: 自定义过程