使用生成工作区

更新:2011 年 5 月

在生成过程中,生成代理将编译源文件,并对源文件执行其他操作。 生成代理应先从版本控制服务器上的文件夹中将文件下载到本地工作目录,然后才能做到这一点。 为了帮助下载这些文件,生成代理将创建一个版本控制工作区,该工作区会将服务器上的文件夹映射到生成代理的工作目录中的本地文件夹。

生成工作区扮演的角色

在生成过程开始之前

步骤 1 在您的生成系统中设置每个生成代理的工作目录。 有关更多信息,请参见创建和使用生成代理

步骤 2 当您创建生成定义时,您在**“工作区”**选项卡上,指定包含要下载的文件的文件夹以及将这些文件夹映射到生成代理上的本地文件夹的方式。

在生成过程中

步骤 3 生成过程会将您的工作区规范传递到 CreateWorkspace 活动 工作流活动以在其工作目录中创建一个工作区。

步骤 4 生成过程会使用 DownloadFiles 活动 活动将文件下载到该工作区。 在完成此步骤后,生成代理可对这些文件执行操作(如编译)。

为您的生成定义设计工作区

在为您的生成定义设计工作区时,您应遵循一些最佳做法。

包含所有所需的文件夹。

确保您包含了包括生成过程所需的文件的所有文件夹。 例如,如果将其他解决方案添加到**“进程”选项卡上的“要生成的项”**,则您可能需要向工作区添加其他映射。

仅包含所需的文件夹。

仅使用**“状态”“活动”来映射生成过程所需的文件夹。 如果映射文件夹的子文件夹包含生成过程不需要的文件,则使用“状态”“已掩蔽”**来映射该子文件夹。 在许多情况下,当您创建生成定义时,将在工作区中映射团队项目的根文件夹。 此配置会导致生成代理下载团队项目的版本控制文件夹中的所有文件。 如果此文件夹包含大量数据,则生成会下载大量不需要的数据,从而浪费生成系统资源并减慢您的生成过程。

在从**“进程”选项卡上的“要生成的项”**字段中删除项时,将查找可从工作区中删除的映射。

使用 $(SourceDir) 标记将服务器文件夹映射到 .. \Sources subdirectory 中的本地文件夹。

在大多数情况下,源文件在生成代理上的最佳位置是在工作目录中的 ..\Sources 子目录的下方。 可使用“生成代理文件夹”框中的 $(SourceDir) 标记来指定此位置。

了解工作区影响签入所触发的生成定义的方式。

如果已将生成定义的**“触发器”设置为“持续集成”“滚动生成”“封闭签入”,则会将映射的服务器文件夹绑定到生成过程。 例如,如果开发人员将更改签入一个在具有“封闭签入”**触发器的生成定义的工作区中映射的文件夹,则这些更改将被阻止,直到生成过程完成。

有关触发器的更多信息,请参见指定生成触发器和原因

生成定义工作区示例

Roberto 是一名版本生成工程师,他创建了 Storefront Nightly 生成定义。

生成定义工作区示例

步骤 1 此生成定义将生成两个解决方案:$/Core/Controllers/Controllers.sln$/Core/Viewers/Viewers.sln。 因此,它必须映射包含这些解决方案的两个文件夹、这些文件夹所包含的项目以及它们所需的所有其他文件。

步骤 2 为了提高生成过程效率,Roberto 排除了包含其生成过程不需要的文档文件的文件夹:$/Core/Viewers/Docs

步骤 3 解决方案依赖于其他公司的组件库中的一些二进制文件。 这些二进制文件受专有机制保护,该机制要求它们位于特定的物理文件夹中:c:\adatum\widgets

复制工作区中的数据

通过将映射从一个工作区复制到另一个工作区,可为您节省时间。

从某个工作区中复制映射

  1. 单击**“复制现有工作区”**。

  2. 在**“选择要复制的工作区”**对话框中,从工作区中复制映射。

从其他生成定义工作区或其他团队成员的工作区中复制映射

  1. 执行以下步骤之一:

    • 若要从其他生成定义工作区中复制映射,请打开生成定义,然后单击**“工作区”**选项卡。

    • 从其他团队成员的工作区中复制映射,要求团队成员打开**“文件”菜单,再单击“源代码管理”,然后单击“工作区”。 选择工作区,然后单击“编辑”**。

  2. 右击**“工作文件夹”表中的行,然后单击“全选”**。

  3. 右击**“工作文件夹”表中的行,然后单击“复制”**。

  4. 创建一个文本文件,将剪贴板的内容粘贴到该文本文件中,然后保存该文件。

  5. 创建一个生成定义,或修改作为将映射复制到的目标的现有生成定义。

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

  6. 在**“工作区”选项卡上,右击“工作文件夹”表中的行,然后单击“粘贴”**。

  7. 必要时,可采用映射以供生成代理使用。 具体而言,请确保**“生成代理文件夹”**框中的值是正确的,并包含相应的 $(SourceDir) 标记。

更多信息

在创建生成定义时定义生成代理工作区。 有关更多信息,请参见创建基本生成定义

生成代理工作区与开发人员用来处理团队项目中的源文件的版本控制工作区的机制基本相同。 可复制版本控制工作区和生成代理工作区之间的映射。 有关版本控制工作区的更多信息,请参见创建工作区以使用团队项目

修订记录

日期

修订记录

原因

2011 年 5 月

新增主题。

信息补充。