定义基于默认模板的生成过程

您可以使用默认模板 (DefaultTemplate.11.1.xaml),通过选择要生成的代码项目来快速定义基本生成。 还可以使用此模板,以包括更多高级功能(例如运行自动测试),并调整生成过程的各个方面以满足您团队的需求。

必需的权限

若要执行此过程,必须将**“编辑生成定义”权限设置为“允许”**。 有关更多信息,请参见Team Foundation Server 权限

使用默认模板创建生成定义

  1. 在**“团队资源管理器”**中:

    1. 如果尚未连接到您想要在其中工作的团队项目,请选择 连接到团队项目

    2. 选择 “主页”图标“主页”,然后选择 “生成”图标“生成”

    3. 在**“生成”页上,选择“新建生成定义”**。

    此时将出现新建生成定义窗口。

  2. 默认情况下,在**“生成选项卡”“生成过程模板”下,默认模板已选中。 在“生成过程参数”下,展开“必需”**节点,并至少指定一个要生成的解决方案或项目。

    有关更多信息,请参见本主题后面部分的指定要生成的项目。

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

  4. 在**“处理”**选项卡上完成字段后,在其他选项卡上指定生成过程选项。

    有关更多信息,请参见创建生成定义

主题内容

  • 关于默认模板的生成过程参数

  • 指定要生成的项目

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

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

  • 指定生成代理时间限制

  • 运行自动化测试和启用测试影响分析

  • 指定基本生成过程参数

  • 指定高级生成过程参数

关于默认模板的生成过程参数

本主题说明如何通过在基于默认模板的生成中使用生成过程参数来定义生成。 本主题中的信息介绍了在满足以下条件的情况下应与 Visual Studio 匹配的功能:

  • 您正在从随附于 Visual Studio 的其中一个过程模板创建的团队项目中工作。

  • 团队中的任何人都未删除或自定义 DefaultTemplate.11.1.xaml。

指定要生成的项目

在**“要生成的项目”框中,您可以指定要生成的一个或多个解决方案或代码项目。 (若要显示此框,请展开“必需”节点,然后展开“要生成的项”**节点。)您必须指定至少一个解决方案或项目。

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

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

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

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

重要

确保每个项目或解决方案的路径是生成定义的“工作区”选项卡上所列的任一“源代码管理文件夹”值的子路径。

指定要生成的平台和配置

在**“要生成的配置”框中,您可以指定要生成哪些平台和配置。 (若要显示此框,请展开“必需”节点,然后展开“要生成的项”**节点。)例如,您可以通过在此框中包含“Release|x86”,来指定此生成应只生成 32 位版本 C++ 项目的发布配置。

提示

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

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

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

**“要生成的配置”**框中的每个配置应为以下形式:

配置|平台

必须替换以下占位符:

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

  • 平台是一个值,例如“Win32”、“x86”、“x64”或“任意 CPU”。

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

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

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

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

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

  • 名称筛选器:您可以通过在此字段中键入代理名称,来筛选用于处理此生成定义的生成代理。 还可以使用 *? 通配符字符指定名称集。 例如,可以指定 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。

运行自动化测试和分析测试影响

您可将生成设计为执行一个或多个自动测试运行,并分析代码更改对测试产生的影响。 有关更多信息,请参见在生成过程中运行测试

指定基本生成过程参数

要在某些常见情形下成功完成生成,通常必须修改**“基本”**节点中的生成过程参数。

若希望...

然后设置此参数...

使用本指南...

执行一个或多个自动测试运行

自动测试

在生成过程中运行测试

自定义用于命名已完成生成的约定

生成号格式

您和您的团队可以将有用数据加载到每个已完成生成。 有关更多信息,请参见使用生成号

若要自定义此参数,您可以直接在此字段中输入文本。 不过,通过选择省略号按钮 (...) 打开并使用“BuildNumber 格式编辑器”对话框,您可更轻松地修改此值并显示可用标记。 在此对话框中,选择“宏”以显示并插入您要使用的标记。

指定是否以及如何在处理生成之前清理生成代理的工作区

清理工作区

在此菜单上,选择以下值之一:

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

  • 选择“输出”可删除所有现有输出,但保留最近生成之后未更改过的源代码文件(通过执行 tf get 而不使用 /all 开关)。

  • 选择“无”可保留现有输出,并保留最近生成之后未更改过的源代码文件(通过执行 tf get 而不使用 /all 开关)。

提示提示
如果生成过程不需要“全部”选项执行的额外清除,则通过指定“无”(最快的选项)或“输出”,可显著减少运行生成所需的时间。但是,如果工作区未清理,那么您的团队很可能缺少某些类型的缺陷(例如在重构过程中引入的缺陷)。

指定生成日志的详细级别

日志记录详细级别

虽然生成信息对团队来说很重要,但是记录过多信息的生成过程可能会导致问题。 这类问题可以包括耗尽服务器存储和 CPU 资源,减慢服务器性能,以及使客户端计算机上的生成结果窗口中的用户体验降级。 您可控制部署必须处理、存储和显示的信息量。 有关更多信息,请参见管理生成信息和控制详细级别

分析您的代码以查找常见缺陷

执行代码分析

在此菜单上,选择以下值之一:

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

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

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

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

存储您的符号以启用历史调试等功能

“编制源索引”“发布符号的路径”

您可以配置您的生成定义以发布符号数据,从而启用历史调试等功能。 有关更多信息,请参见发布符号数据

指定高级生成过程参数

要在某些不太常见的情形下成功完成生成,需要修改**“高级”**节点中提供的生成过程参数。

若希望...

然后设置此参数...

使用本指南...

指定生成代理设置

代理设置

指定使用哪些生成代理处理您的生成,指定生成代理时间限制

分析测试影响

分析测试影响

在生成过程中运行测试

将每个已完成的生成与已转为代码的所有变更集及其关联的工作项相链接

将变更集与工作项相关联

在大多数情况下,最佳做法是将此参数设置为“True”(默认值)。 尤其是对于已计划的生成(例如每夜生成)更应采取此做法,因为通常使用已成功完成的已计划生成来确认修补程序或运行其他测试。

每个生成定义均维护其自己的记录,其中包含等待与下一个已完成的生成相关联的变更集和工作项。 例如,变更集 382 由生成 A 和生成 B 生成。 生成 A 已排队,并已成功完成。 生成 B 已排队,并失败。 变更集 382 现在与生成 A 的成功完成生成和生成 B 的失败完成生成相链接。变更集 382 将不会与生成 A 的下一个已完成生成相链接,但它将与生成 B 的下一个已完成生成相链接。

在生成失败时创建工作项

在失败时创建工作项

如果您希望系统在生成失败时创建工作项,请将此参数设置为“True”

禁用测试

禁用测试

在生成过程中运行测试

生成源代码的特定版本

获取版本

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

有关 versionspec 的更多信息,请参见命令行语法

标记已编译到每个已完成生成的每个文件的版本

标记源

如果希望系统为每个源代码文件进行标记,则将此参数设置为“True”。 此操作使您的团队能轻松标识已完成生成中包含的每个文件的版本。

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

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”,您可以解决此类问题。

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

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

对专用生成进行排队

私人放置位置

通常,在生成定义中未指定此参数的值。 有关对专用生成进行排队的更多信息,请参见 将生成排入队列

按解决方案组织输出文件

解决方案特定生成输出

如果要按解决方案组织输出文件,请将此参数设置为 True