Team Foundation Build 活动

Team Foundation Build 活动是 Team Foundation Build 系统中的生成过程的基本组件。 您可以使用这些活动来创建自定义生成过程以满足团队要求,例如遵循自定义逻辑或执行专用任务。

在大多数情况下,创建自定义生成过程模板的最佳方法是基于默认模板 (DefaultTemplate.xaml) 创建。 这样,您便可以利用已创建的通常很有用的功能,同时自定义特定部件以满足您的要求。 此方法的另一个优点是,您可以看到本主题中描述的活动具体且实用的使用示例。 有关如何创建生成过程模板的更多信息,请参见自定义生成过程模板

重要

只有在必须满足专用要求时,才应创建自定义生成过程。您可以使用 DefaultTemplate.xaml 快速定义满足很多典型要求的生成过程。有关详细信息,请参阅对生成过程使用默认模板

主题内容

  • 所需权限

  • 面向目标的活动参考

  • 按字母顺序的活动参考

所需权限

若要执行使用 Team Foundation Build 活动的过程,则必须将以下权限设置为**“允许”**:

  • 编辑生成定义

  • 针对相关版本控制目录(如团队项目的 BuildProcessTemplates 子目录)的**“签出”“签入”**

  • 对生成进行排队。

有关详细信息,请参阅 Team Foundation Server 权限参考

面向目标的活动参考

  • 执行基本任务

    • 获取环境变量的值

    • 测试 Null 值的变量

    • 获取工作区中的文件的路径

    • 使用目录

    • 获取生成代理工作目录的路径

    • 下载不在工作区中的文件

    • 查找文件

    • 将警告、错误、消息和其他数据写入生成日志

    • 将生成元数据写入数据仓库

  • 控制生成过程

    • 在生成代理上运行活动

    • 使用已命名的 mutex 结构实现线程安全过程

    • 根据原因(触发器)限制生成过程的各个部分

  • 编译、测试和执行其他任务

    • 使用 MSBuild 编译二进制文件、运行代码分析和执行其他任务

    • 运行测试

    • 获取受生成影响的测试的列表

    • 启动进程

  • 使用版本控制

    • 将变更集和工作项与生成关联

    • 签入封闭更改

    • 评估签入策略

    • 在版本控制中用标签标记文件

    • 获取搁置集列表

    • TfGet

    • TfResolve

    • TfShelve

    • TfUndo

    • TfUnshelve

    • TfWorkfold

  • 使用工作项

    • 将变更集和工作项与生成关联

    • 创建工作项

  • 使用符号数据

    • 将版本控制路径和版本嵌入 .pdb 文件中的符号数据

    • 将符号发布到 SymStore 符号存储区

  • 获取对有用对象的引用

    • 获取对团队项目集合的对象的引用

    • 获取对生成代理的对象的引用

    • 获取对生成详细信息的对象的引用

    • 获取对生成环境的对象的引用

按字母顺序的活动参考

  • AgentScope

  • ApproveRequestForCheckIn

  • AssociateChangesetsAndWorkItems

  • CheckInGatedChanges

  • ConvertWorkspaceItem

  • ConvertWorkspaceItems

  • CopyDirectory

  • CreateDirectory

  • CreateWorkspace

  • DeleteDirectory

  • DeleteWorkspace

  • DownloadFile

  • DownloadFiles

  • EvaluateCheckInPolicies

  • ExpandEnvironmentVariables

  • FindMatchingFiles

  • GenerateRunSettings

  • GetApprovedRequests

  • GetBuildAgent

  • GetBuildDetail

  • GetBuildDirectory

  • GetBuildEnvironment

  • GetCommonLocalPath

  • GetCommonServerPath

  • GetImpactedTests

  • GetPendingChanges

  • GetRejectedRequests

  • GetReshelvedShelveset

  • GetShelvedChanges

  • GetTeamProjectCollection

  • GetWorkspace

  • IndexSources

  • InvokeForReason

  • InvokeProcess

  • IsNotNull<T>

  • IsNull<T>

  • LabelSources

  • LabelWorkspace

  • MSBuild

  • MSTest

  • OpenWorkItem

  • ParseWorkspaceSpec

  • PublishSymbols

  • QueryShelvesets

  • RejectRequestFromCheckIn

  • RetryRequest

  • RetryRequests

  • RevertWorkspace

  • RunOnce

  • RunTests

  • SetBuildProperties

  • SharedResourceScope

  • SyncWorkspace

  • SynchronizeRequests

  • TfGet

  • TfQueryConflicts

  • TfResolve

  • TfShelve

  • TfUndo

  • TfUnshelve

  • TfWorkfold

  • TfsBuild

  • UpdateBuildNumber

  • WriteBuildError

  • WriteBuildInformation<T>

  • WriteBuildMessage

  • WriteBuildTestError

  • WriteBuildWarning

  • WriteCustomSummaryInformation

执行基本任务

可使用 Team Foundation Build 活动执行以下任务:

  • 获取环境变量的值

  • 获取工作区中的文件的路径

  • 使用目录

  • 获取生成代理工作目录的路径

  • 下载不在工作区中的文件

  • 查找文件

  • 将警告、错误、消息和其他数据写入生成日志

  • 编写有关生成的元数据

获取环境变量的值(ExpandEnvironmentVariables 活动)

使用 ExpandEnvironmentVariables 活动解析生成服务器上的一个或多个环境变量。 如果此活动位于 AgentScope 序列内,则在生成代理上读取环境变量,否则在生成控制器上读取环境变量。

提示

你可通过 TF_BUILD 环境变量获取一些有用的数据。例如,你可获取二进制目录,生成过程会将该目录中的输出文件复制到暂存位置。请参见Team Foundation Build 环境变量

ExpandEnvironmentVariables Result (String) 属性

返回操作的结果。 例如:The temp directory on machine BLDSERV3 is C:\windows\SERVIC~2\NETWOR~1\AppData\Local\Temp.

ExpandEnvironmentVariables Argument 属性

  • Input (String):必须指定包含要解析的环境变量的字符串。 您必须通过指定 MSBuild 属性(而不是使用 Windows 百分比符号表示法)来设置每个环境变量的格式。 例如:"The temporary directory on machine $(COMPUTERNAME) is $(TEMP)."

  • AdditionalVariables (IDictionary<String,String>):您可以指定一个 IDictionary 对象,其中包含要解析为对应值的其他变量(作为键)。

返回页首

测试 Null 值的变量

IsNotNull<T>

使用**“IsNotNull<T>”**活动可测试在 Value (Object) 属性中提供的 Visual Basic 表达式(例如您正在使用的变量)是否不为 Null。 测试结果将在 Result Boolean 属性中返回。

IsNull<T>

使用**“IsNull<T>”**活动可测试在 Value (Object) 属性中提供的 Visual Basic 表达式(例如您正在使用的变量)是否为 Null。 测试结果将在 Result Boolean 属性中返回。

获取至工作区中文件的路径

每个生成都有一个在生成定义的**“工作区”**选项卡上定义的版本控制工作区。 该工作区为生成提供了其所需的从版本控制系统对源代码文件和任何其他文件的访问权。 Team Foundation Build 提供了两个可用于处理生成工作区中的文件的活动:ConvertWorkspaceItem 和 ConvertWorkspaceItems。

有关生成工作区的更多信息,请参见创建或编辑生成定义

提示

有关如何在典型方案中使用 ConvertWorkspaceItem 活动的详细的分步指南,请参见控制生成系统放置二进制文件的位置

获取至工作区中文件的路径(ConvertWorkspaceItem 活动)

使用 ConvertWorkspaceItem 活动将服务器路径转换为生成代理上的本地路径,或将生成代理上的本地路径转换为服务器路径。

ConvertWorkspaceItem Result (String) 属性

返回转换的路径。

ConvertWorkspaceItem Argument 属性

  • Input (String):必须提供要转换的路径值。

  • Workspace (Workspace):必须提供对包含文件的 Workspace 的引用。 在大多数情况下,您应该将此属性设置为在 CreateWorkspace 活动的 Result 属性中初始化的变量。 如果您要创建基于 DefaultTemplate.xaml 的生成过程,则可能应使用 Workspace 变量。

  • 方向

    • **将服务器路径转换为本地路径:**在 Direction 属性中,选择 ServerToLocal,然后在 Input (String) 属性中指定服务器上的文件的路径。

      例如,您的团队可能在以下目录中存储常用实用程序:$/OurTeam/BuildProcess/Util。 您可以创建一个自定义生成过程,该过程在编译二进制文件之后运行 ScanBinaries.exe 实用工具。 如果 $/OurTeam/BuildProcess/Util 在生成定义的**“工作区”**选项卡上进行了映射,则可以在 Input 属性中指定 $/OurTeam/BuildProcess/Util/ScanBinaries.exe 以从 Result (String) 属性获取该实用工具的本地路径。

    • **将本地路径转换为服务器路径:**在 Direction 属性中,选择 ServerToLocal,然后在 Input 属性中指定生成代理上的文件的本地路径。

获取至工作区中文件的路径(ConvertWorkspaceItems 活动)

使用 ConvertWorkspaceItems 活动可将服务器路径转换为生成代理上的本地路径,或将生成代理上的本地路径转换为服务器路径。

ConvertWorkspaceItems Result (IList<String>) 属性

返回转换的路径值。

ConvertWorkspaceItems 参数属性

  • Input (IEnumerable<String>):必须提供要转换的路径值。

  • Workspace (Workspace):必须提供对包含这些文件的 Workspace 的引用。 在大多数情况下,您应该将此属性设置为在 CreateWorkspace 活动的 Result 属性中初始化的变量。

    提示

    如果您要创建基于 DefaultTemplate.xaml 的生成过程,则可能应使用 Workspace 变量。

  • Direction:选择以下值之一:

    • 如果您要在 Input 属性中指定服务器路径值的集合并且希望 Result 属性返回本地路径值的列表,则选择 ServerToLocal。

    • 如果您要在 Input 属性中指定本地路径值的集合并且希望 Result 属性返回服务器路径值的列表,则选择 LocalToServer。

使用目录

您可以通过 Team Foundation Build 中的几个活动来使用目录。

提示

如果您必须使用作为生成的版本控制工作区一部分的目录,则应改用工作区活动。有关更多信息,请参见获取工作区中的文件的路径。

创建目录(CreateDirectory 活动)

使用 CreateDirectory 活动可创建一个目录,其名称在 Directory (String) 属性中指定。

复制目录(CopyDirectory 活动)

使用 CopyDirectory 活动可以递归方式将一个目录(在 Source (String) 属性中指定)中的所有内容复制到另一个目录(在 Destination (String) 属性中指定)。 您在 Destination 属性中指定的目录必须已存在。 将不会复制空目录或子目录。

删除目录(DeleteDirectory 活动)

使用 DeleteDirectory 活动可删除一个目录,其名称在 Directory (String) 属性中指定。 如果要删除的目录包含子目录,则必须将 Recursive (Boolean) 属性设置为 True,否则生成将会失败。

获取至生成代理工作目录的路径(GetBuildDirectory 活动)

使用 GetBuildDirectory 活动可从 Result (String) 属性获取生成代理的工作目录的文本路径。 您只能在 AgentScope 活动内使用此活动。

返回页首

操作路径数据

GetCommonLocalPath 活动

使用**“GetCommonLocalPath”**活动可获取至一个或多个本地文件夹的最低级别的公用父文件夹的路径。 例如,如果指定 LocalItems (IEnumerable<String>),如下所示:

{“c:\Code\Fabrikam-3\TestScrum\Main\FabrikamFiber.CallCenter”, “c:\Code\Fabrikam-3\TestScrum\Main\lib”}

那么,Result (String) 将返回:

c:\Code\Fabrikam-3\TestScrum\Main

GetCommonServerPath 活动

使用**“GetCommonServerPath”**活动可获取至一个或多个本地文件夹的最低级别的公用父文件夹的路径。 例如,如果指定 ServerItems (IEnumerable<String>),如下所示:

{“$/TestScrum/Main/FabrikamFiber.CallCenter”, “$/TestScrum/Main/lib”}

那么,Result (String) 将返回:

$/TestScrum/Main

下载不在工作区中的文件

使用 DownloadFiles 活动可下载一个或多个文件。 忽略 DownloadFile 活动。

DownloadFiles 活动

使用 DownloadFiles 活动可从版本控制中下载一个或多个文件。

提示

如果要下载的文件位于生成工作区中,则可能应使用 ConvertWorkspaceItem 活动访问它们。

DownloadFiles 参数属性

  • LocalPath (String) 必须指定一个值:

    • 如果要下载单个文件,请指定要提供给要下载的文件的本地副本的本地路径和名称;例如,"c:\Docs\readme.txt"。

    • 如果要下载多个文件,请指定要将文件下载到的目录的本地路径;例如,"c:\Docs\"。

  • ServerPath (String) 必须指定一个值:

    • 如果要下载单个文件,请指定要下载的文件的服务器路径和名称;例如,"$/Docs/readme.txt"。

    • 如果要下载多个文件,请指定包含要下载的文件的目录的服务器路径;例如,"$/Docs/"。

  • Recursion (RecursionType):

    • OneLevel:下载您在 ServerPath 属性中指定的目录中的文件。

    • Full:下载您在 ServerPath 属性中指定的目录中的文件以及任何子目录中的任何文件。

  • Version (String):您可以指定 versionspec。 若要下载当前版本,请将此属性设置为 Microsoft.TeamFoundation.VersionControl.Client.VersionSpec.Latest.DisplayString。有关 versionspec 的更多信息,请参见命令行语法

  • DeletionID (Int32):仅当您要下载已从版本控制中删除的文件时才能指定此属性。 您可以通过在命令提示符处键入 tf dir /deleted,以递归方式获取此值。有关更多信息,请参见 Dir Command。 但是,Team Foundation Build 不会提供内置活动来获取 DeletionID。 若要使用此属性,您必须获取或创建一个提供此功能的自定义活动。

返回页首

DownloadFile 活动

忽略 DownloadFile 活动。 DownloadFiles 活动是最简单的下载一个或多个文件的方式。

查找文件(FindMatchingFiles 活动)

使用 FindMatchingFiles 活动可查找文件。 在 MatchPattern (String) 属性中指定搜索条件。 在此属性中,您可以指定一个包含以下元素的参数:

  • Directory GetFiles(String, String) 方法的 searchPattern 参数支持的语法。

  • **,用于指定递归搜索。 例如:

    • 若要搜索文本文件的源目录,可为 MatchPattern 属性指定与以下值类似的内容:String.Format("{0}\**\*.txt", SourcesDirectory)。

    • 若要在一个或多个子目录中搜索名为 txtfiles 的文本文件的源目录,可为 MatchPattern 属性指定与以下值类似的内容:String.Format("{0}\**\txtfiles\*.txt", SourcesDirectory)。

可在 Result (IEnumerable<String>) 属性中收集操作的结果。

将警告、错误、消息和其他数据写入生成日志

WriteCustomSummaryInformation

使用 WriteCustomSummaryInformation 活动可将消息写入生成摘要,以便在生成结果窗口中向用户显示。

WriteCustomSummaryInformation 参数属性

  • Message (String):您必须指定要在生成摘要中显示的消息。

    您可使用下列语法之一在消息中包含超链接:

    [link text](url)
    [link text] (url)
    

    例如:

    For the latest operation status, see [Fabrikam Fiber Ops] (http://intranet.fabrikam.com/ops/status).
    
  • SectionDisplayName (String):您必须指定要在其中显示消息的部分的名称。 如果具有相同**“SectionKey”值的多个 WriteCustomSummaryInformation 实例指定不同的“SectionDisplayName”值,则系统将在生成过程模板中使用第一个实例的“SectionDisplayName”**。

  • SectionKey (String):您必须为要在其中显示消息的部分的名称指定一个标识符。 您指定的值必须符合 NameProperty 中描述的规则。

    例如,如果使用“MySection”的 SectionKey 值来实现两个 WriteCustomSummaryInformation 实例,则在处理生成时,两条消息将出现在生成摘要的同一部分中。

  • SectionPriority (Int32):您可指定该部分的优先级,这反过来确定该部分在生成摘要中的相对位置。 值越低,该部分在摘要中显示的位置越高。 如果具有相同**“SectionKey”值的多个 WriteCustomSummaryInformation 实例指定不同的“SectionPriority”值,则系统将在生成过程模板中使用第一个实例的“SectionPriority”**值。

返回页首

WriteBuildMessage 活动

使用 WriteBuildMessage 活动可将信息性消息写入生成日志。 您必须在 Message (String) 属性中指定该消息。 还可以通过修改 Importance 属性 (BuildMessageImportance) 的值指明该消息的重要性。

提示

  • 您的生成过程的用户可能依赖详细级别筛选来减少与他们必须查看的内容和存储在数据仓库中的数据有关的信息过载。您可以使用周全且一致的方法来设置生成消息的 Importance 属性,以帮助提高此筛选的效率。有关详细信息,请参阅管理生成信息和控制详细级别

  • 如果使用默认设置,则您的消息将不会写入生成日志。若要解决此问题,请执行以下步骤之一:

    • 将 WriteBuildMessage Importance 属性设置为 Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High。

    • 在生成定义的“进程”选项卡上,将“Logging Verbosity”进程参数设置为 Detailed 或 Diagnostic。

WriteBuildWarning 活动

使用 WriteBuildWarning 活动可将警告消息写入生成日志。 警告将连同一个黄色感叹号出现在生成结果窗口中。 您必须在 Message (String) 属性中指定该消息。

仅当您的团队将详细级别设置为“最低”或更高的值时,才会记录您的生成警告。 有关详细信息,请参阅管理生成信息和控制详细级别

WriteBuildError 活动

使用 WriteBuildError 活动可将生成错误消息写入生成日志。 错误将连同一个红色感叹号出现在生成结果窗口中。 在生成日志中写入错误之后,该生成最多可分类为 Partially Succeeded。 您必须在 Message (String) 属性中指定该消息。

无论详细程度设置如何,将始终记录错误。 有关详细信息,请参阅管理生成信息和控制详细级别

WriteBuildTestError 活动

使用 WriteBuildTestError 活动可将测试错误消息写入生成日志。 错误将连同一个红色感叹号出现在生成结果窗口中。 在生成日志中写入错误之后,该生成最多可分类为 Partially Succeeded。 您必须在 Message (String) 属性中指定该消息。

无论详细程度设置如何,将始终记录错误。 有关详细信息,请参阅管理生成信息和控制详细级别

WriteBuildInformation<T> 活动

使用 WriteBuildInformation<T> 活动可将对象放入到生成日志中。 用户在生成结果窗口中查看日志时,将使用反射呈现该对象。

WriteBuildInformation<T> 参数属性

  • Value (Object):必须指定要放入到生成日志中的对象。 对于要在生成结果窗口中呈现的对象,该对象必须实现 IBuildInformationNode 并将 Type 设置为以下 InformationTypes 值之一:

    • ActivityProperties

    • ActivityTracking

    • AgentScopeActivityTracking

    • BuildError

    • BuildMessage

    • BuildProject

    • BuildStep

    • BuildWarning

    • ExternalLink

    • OpenedWorkItem

  • ParentToBuildDetail:您可以指定 False,以使此对象的父级成为此活动的父级,或者也可以指定 True,以使此对象的父级成为 IBuildDetail 对象。

    此属性的一个作用是影响信息在生成结果窗口中的显示方式。 如果指定 False,信息将缩进并与来自 WriteBuildInformation<T> 活动之前和之后的其他活动以及处于同一级别的其他活动的输出对齐。 如果指定 True,信息将不会缩进。

返回页首

将元数据写入数据仓库

您可以将有关生成的元数据写入到数据仓库中:

  • 编写生成号(UpdateBuildNumber 活动)

  • 编写有关生成的关键数据点(SetBuildProperties 活动)

提示

如果这些活动不支持您要编写的元数据,则可以使用 GetBuildDetail 活动来获取对 IBuildDetail 对象的引用,然后使用该引用将这些数据直接分配给该对象。

写入生成号(UpdateBuildNumber 活动)

使用 UpdateBuildNumber 活动可设置生成的生成号(或名称)。 此活动将执行以下步骤:

  1. 基于用于确定生成号格式的表达式构造生成号。 生成过程一般从工作流实参接受此表达式,该实参由生成定义的**“进程”**选项卡上的一个形参提供。

  2. 通过将生成的值写入 BuildNumber 属性来设置生成的生成号(或名称)。

UpdateBuildNumber Result (String) 属性

Result:返回新的 BuildNumber 值。

UpdateBuildNumber 属性

返回页首

写入有关生成的关键数据点(SetBuildProperties 活动)

使用 SetBuildProperties 可将关键数据点写入 IBuildDetail 对象,该对象将在数据仓库中管理有关每个生成的数据的存储。 大多数此类数据将在生成结果窗口中显示给用户。

SetBuildProperties 属性

  • PropertiesToSet:必须选中要设置的属性的名称对应的复选框。

  • BuildNumber (String):您可以设置生成的 BuildNumber,您可以将它视为生成的名称。

    提示

    如果要基于生成定义的“进程”选项卡上用户指定的设置来设置此值,则可能应使用 UpdateBuildNumber 活动,而不是使用此属性。

  • CompilationStatus (BuildPhaseStatus):您可以设置编译状态 (CompilationStatus)。(MSBuild 活动也会自动设置此值。)

  • DropLocation (String):您可以在 DropLocation 属性中记录放置位置。

    备注

    如果设置此属性,则实际上不会创建放置位置,而会使用此属性在数据仓库中存储放置文件夹的位置,该文件夹通常是使用 CreateDirectory 活动创建的。

  • KeepForever (Boolean):如果要跳过生成定义的**“保留策略”**选项卡上的设置并无限期地保留已完成的生成,则可以将 KeepForever 属性设置为 True。

  • LabelName (String):您可以将 LabelName 属性设置为记录用于在版本控制中的源代码文件上标记此生成的标签。 您通常可将此属性设置为与 LabelWorkspace 活动的 Name 属性中的值匹配。

    重要

    Team Foundation Build 需要此数据以将变更集和工作项与生成进行关联。如果未提供此数据,AssociateChangesetsAndWorkItems 活动将失败。

  • LogLocation (String):您可以使用 LogLocation 属性来记录生成过程放置记录文件的文件夹的 UNC 文件路径。

    备注

    您可能不需要在自定义生成过程中使用此属性。此属性主要供 UpgradeTemplate.xaml 文件使用,以支持旧的生成过程。

  • Quality (String):您可以在 Quality 属性中记录生成质量。

  • SourceGetVersion (String):您可以使用 SourceGetVersion 属性记录针对此生成对源检索的版本规范。

  • Status (BuildStatus):您可以在 Status 属性中记录生成的总体状态。 例如,可使用此属性指示生成是已成功还是已失败。

  • TestStatus (BuildPhaseStatus):您可使用 TestStatus 属性记录对此生成运行的测试的总体状态。 例如,可使用此属性指示对此生成运行的测试是已成功还是已失败。

返回页首

控制生成过程

您可以使用 Team Foundation Build 活动通过以下方式来控制生成过程:

  • 在生成代理上运行活动

  • 使用已命名的 mutex 结构实现线程安全过程

  • 根据原因(触发器)限制生成过程的各个部分

在生成代理上运行活动(AgentScope 活动)

使用 AgentScope 活动将要在生成代理上运行的生成过程的各部分包含在一起。

AgentScope 参数属性

  • 代理选择

    • MaxWaitTime (TimeSpan):您可以指定生成过程等待生成代理变为可用的最大时间量。 您可以按 hh:mm:ss 格式键入值。 例如,如果指定值 01:30:45,并且在 1 小时 30 分钟 45 秒之后尚未将生成指派给生成代理,则该生成将由于超时错误而失败。 如果您想要让生成控制器查找用于处理此生成定义的生成代理不受时间限制,则指定值 00:00:00。

      重要

      您可以通过在 MaxWaitTime 属性中指定合理的非零值来避免备份生成队列。

    • ReservationSpec (AgentReservationSpec):您可以限制将处理此活动包含的活动的生成代理的种类。 例如,您可以指定只有具有某些标记的生成代理才可用于处理 AgentScope 活动中的活动。

  • 执行

    • MaxExecutionTime (TimeSpan):您可以指定完成此 AgentScope 活动所允许的最大时间量。 您可以按 hh:mm:ss 格式键入值。 例如,如果指定值 04:30:15,并且在 4 小时 30 分钟 15 秒之后未完成生成代理,则该生成将由于超时错误而失败。 如果想要生成代理处理生成时不受时间限制,则指定值 00:00:00。

      提示

      您可以通过在 MaxExecutionTime 属性中指定合理的非零值来避免备份生成队列。

  • 范围

    • DataToIgnore:忽略此属性。

返回页首

使用已命名的 mutex 结构实现线程安全过程(SharedResourceScope 活动)

使用 SharedResourceScope 活动可实现已命名的 mutex(互斥)结构,以便确保生成过程的封闭段将是“线程安全的”。

此活动的典型用途是将必须访问共享资源(一次只能由一个进程访问)的生成过程的各部分包含在一起。 例如,您可能想要让您的生成依次写入到某个文件共享上的一个文本文件。 若要确保此类过程正常运行,您应该在 SharedResourceScope 活动内实现它。

您可以在 DefaultTemplate.xaml 中找到另一个示例,在该文件中,PublishSymbols 活动的调用嵌入 SharedResourceScope 活动中:

  1. 序列 (Sequence) >

  2. 在代理上运行 (AgentScope) >

  3. 尝试编译、测试并关联变更集和工作项 (TryCatch [Try]) >

  4. 序列 (Sequence) >

  5. 获取受影响的测试、编制源索引和发布符号 (Parallel) >

  6. If SourceAndSymbolServerSettings.IndexSources Or SourceAndSymbolServerSettings.HasSymbolStorePath (If [Then]) >

  7. 为已触发的生成编制源索引和发布符号 (InvokeForReason) >

  8. If SourceAndSymbolServerSettings.HasSymbolStorePath (If [Then]) >

  9. 尝试发布符号 (TryCatch [Try]) >

  10. 同步对符号存储区的访问 (SharedResourceScope) >

  11. 发布符号 (PublishSymbols)

SharedResourceScope 参数属性

  • ResourceName (String):必须指定一个值。 如果 SharedResourceScope 活动的所有实例在团队项目集合中具有相同的 ResourceName 值,则它们一次只能运行一个(即使位于不同的生成定义模板中也是如此)。

  • MaxExecutionTime (TimeSpan):您可以指定完成 SharedResourceScope 活动所允许的最大时间量。 您可以按 hh:mm:ss 格式键入值。 例如,如果指定值 04:30:15,而 SharedResourceScope 活动在 4 小时 30 分钟 15 秒之后尚未完成,则该生成将由于超时错误而失败。 如果您想要让生成代理在处理 SharedResourceScope 活动时不受时间限制,则指定值 00:00:00。

    提示

    您可以通过在 MaxExecutionTime 属性中指定合理的非零值来避免备份生成队列。

  • MaxWaitTime (TimeSpan):您可以指定生成过程在队列中等待处理 SharedResourceScope 活动的最大时间量。 您可以按 hh:mm:ss 格式键入值。 例如,如果指定值 01:30:45,而 SharedResourceScope 活动在 1 小时 30 分钟 45 秒之后尚未处理,则该生成将由于超时错误而失败。 如果您想要让生成过程在队列中等待时不受时间限制,则指定值 00:00:00。

    提示

    您可以通过在 MaxWaitTime 属性中指定合理的非零值来避免备份生成队列。

返回页首

根据原因(触发器)限制生成过程的各个部分(InvokeForReason 活动)

使用 InvokeForReason 活动可将一段生成过程包含在一起,您希望这段生成过程仅在已因特定原因而运行的生成中运行。 生成原因通常由用户在生成定义的**“触发器”**选项卡上选择的触发器设置。 您可以在 Reason 属性中指定一个或多个要允许的原因值。有关详细信息,请参阅指定生成触发器和原因

返回页首

编译、测试和执行其他任务

您可以使用 Team Foundation Build 活动编译二进制文件、运行测试和执行其他任务:

  • 使用 MSBuild 编译二进制文件、运行代码分析和执行其他任务

  • 运行测试

  • 获取受此生成影响的测试的列表

使用 MSBuild 编译二进制文件、运行代码分析和执行其他任务(MSBuild 活动)

使用 MSBuild 活动编译二进制文件、运行代码分析和利用 MSBuild 提供的任何其他功能。

MSBuild 结果

没有此活动的任何属性返回结果。 但是,如果记录了任何编译错误,则此活动会将 CompilationStatus 设置为 Failed

MSBuild 参数属性

  • AdditionalVCOverrides (String):如果将 GenerateVsPropsFile 设置为 True,则此属性的内容将会嵌入到生成的 .vsprops 文件中。

  • CommandLineArguments (String):可指定要传递给 MSBuild 的命令行参数。

  • Configuration (String):可指定要生成的配置。 例如:“debug” 或 “release”。

  • GenerateVSPropsFile (Boolean):如果此属性设置为 True,则 MSBuild 将生成要传递给 C++ 项目的标准 .vsprops 文件。 此文件将包含 C++ 项目的输出目录和您在 AdditionalVCOverrides 属性中指定的任何内容。

  • LogFile (String):可指定 MSBuild 应创建的日志文件的名称。

  • LogFileDropLocation (String):可指定您希望 MSBuild 放置日志文件的目录的完全限定 UNC 路径。

  • MaxProcesses (Int32):可指定 MSBuild 创建的过程的最大数目。

  • OutDir (String) 可指定 MSBuild 放置已编译的二进制文件的目录。 有关详细信息,请参阅控制生成系统放置二进制文件的位置

  • Platform (String):可指定 MSBuild 生成到的平台。 例如:“Any CPU”、“x86”或“x64”。

  • Project (String):可指定 MSBuild 生成的解决方案或代码项目。

  • ResponseFile (String):可指定 MSBuild 使用的响应文件。

  • RunCodeAnalysis (CodeAnalysisOption):可指定代码分析是应始终运行、从不运行还是根据项目设置运行。

  • Targets (IEnumerable<String>):可指定要生成的目标。

  • TargetsNotLogged (IEnumerable<String>):可指定不应为其记录 ProjectStarted 事件的目标。

  • ToolPath (String):可指定工具的路径。

  • ToolPlatform (ToolPlatform):可指定工具的平台。 指定 Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto 根据当前操作系统检测平台。

  • Verbosity (BuildVerbosity):可指定 MSBuild 生成的日志的详细级别。

有关多个受 MSBuild 属性影响的 MSBuild 选项的更多信息,请参见 MSBuild 命令行参考

返回页首

运行测试

您可使用 RunTests 活动或 MSTest 活动运行测试。

使用 RunTests 活动运行测试

使用**“RunTests”**活动可使用敏捷测试运行程序运行测试。 如果生成使用不兼容的平台对二进制文件进行编译和测试,则您必须针对各个平台中的程序集单独运行此活动。

有关详细信息,请参阅在生成过程中运行测试

核心 RunTests 属性

  • TestSources (IEnumerable<String>):您必须指定程序集文件的列表,这些文件中包含您要运行的测试。

  • ExecutionPlatform (ExecutionPlatformType) 您可指定要测试的二进制文件的平台。 有关详细信息,请参阅敏捷测试运行程序

  • ExecutionTimeout (Int32):您可以指定生成过程等待测试运行完成的最大时间量。 如果要为 RunTests 活动提供无限时间来运行测试,请指定值 0。

  • KeepAlive (Boolean):如果您希望敏捷测试运行程序进程在 RunTests 活动完成后继续在生成代理上运行,则可将此属性设置为 True。

  • RunSettings (String):未记录。

  • TestCaseFilter (String):您可以使用此属性来运行测试用例的子集。 有关详细信息,请参阅指定 Visual Studio 测试运行程序运行的测试的条件

  • UpdateFrequency (Int32):未记录。

  • UpdateFrequencyTimeout (Int32):未记录。

RunTests 发布属性

您可使用下列属性将测试结果发布到团队项目集合:

  • PublishResults (Boolean):如果要发布测试结果,则必须将此属性设置为 True。

  • Flavor (String):可指定运行要发布其结果的测试时应采用的生成风格。

  • Platform (String):可指定运行要发布其结果的测试时应采用的生成平台。

  • RunName (String):您可指定测试运行的名称。 生成过程的客户将在生成结果窗口摘要中看到此名称。 如果未提供名称,则系统将自动生成一个。

委托

  • OnTestCompleted:未记录。

  • OnTestRunCompleted:未记录。

返回页首

使用 MSTest 活动运行测试

使用此活动可通过 MSTest.exe 运行测试。

核心 MSTest 属性

首先确定要运行测试的方式,然后为适当的属性指定值。

MSTest 筛选属性

您可以使用以下属性来筛选要运行的测试:

  • Category (String):可根据测试类别来筛选测试。 此属性与 MSTest.exe 命令的 /category 选项等效。 有关详细信息,请参阅 MSTest.exe 命令行选项 (/category)定义对测试进行分组的测试类别

  • MaxPriority (Int32):可指定要运行的测试的最高优先级。 只有优先级低于或等于此值的测试才会运行。 必须指定等于或大于 MinPriority 属性的正整数,或者,如果您不想指定最高优先级,则必须指定 -1。

    提示

    如果已为您的测试分配属性,则 MinPriorityMaxPriority 属性可以是一个帮助您确定详尽的测试和较快的生成之间的平衡的重要机制。

  • MinPriority (Int32):可指定要运行的测试的最低优先级。 只有优先级高于或等于此值的测试才会运行。 必须指定等于或小于 MaxPriority 属性的正整数,或者,如果您不想指定最低优先级,则必须指定 -1。

  • TestNames (IEnumerable<String>):可指定要运行的测试的名称。 此属性与 MSTest.exe 命令的 /test 选项等效。 有关详细信息,请参阅 MSTest.exe 命令行选项 (/test)

MSTest 发布属性

您可使用下列属性将测试结果发布到团队项目集合:

  • Publish (Boolean):如果要发布测试结果,则必须将此属性设置为 True。

  • Flavor (String):可指定运行要发布其结果的测试时应采用的生成风格。 此属性与 MSTest.exe 命令的 /flavor 选项等效。 有关详细信息,请参阅用于发布测试结果的命令行选项

  • Platform (String):可指定运行要发布其结果的测试时应采用的生成平台。 此属性与 MSTest.exe 命令的 /platform 选项等效。 有关详细信息,请参阅用于发布测试结果的命令行选项

  • TestConfigId (Int32):可指定现有测试管理配置的 ID 以与要发布其结果的测试运行进行关联。 此属性与 MSTest.exe 命令的 /testconfigid 选项等效。 有关更多信息,请在 Visual Studio 命令提示符处运行 MSTest /?

  • TestConfigName (String):可指定现有测试管理配置的名称以与要发布其结果的测试运行进行关联。 此属性与 MSTest.exe 命令的 /testconfigname 选项等效。 有关更多信息,请在 Visual Studio 命令提示符处运行 MSTest /?

MSTest 其他属性

  • CommandLineArguments (String):有关可指定的其他命令行选项的信息,请参见 MSTest.exe 命令行选项

  • PathToResultsFilesRoot (String):可指定 MSTest.exe 放置结果文件(.trx 文件)的生成代理上的目录的根路径。

  • ToolPath (String):可指定包含要运行的 MSTest.exe 版本的目录的路径。 如果未指定路径,Team Foundation Build 将根据测试列表或测试容器中的数据自动确定该路径。

返回页首

获取受生成影响的测试的列表(GetImpactedTests 活动)

使用 GetImpactedTests 活动可识别当前生成中的代码更改并生成受这些更改影响的测试的列表。 该活动会将受影响的测试的列表写入到数据仓库中,以帮助您的测试团队的成员确定在完成此生成后应运行的测试。 有关您的团队如何使用此数据的更多信息,请参见自上一个生成后应运行哪些测试?

备注

此活动对封闭签入生成或专用生成没有影响。

所需条件

只有满足以下条件时,GetImpactedTests 活动才能起作用:

  • 已使用收集测试影响数据的测试设置文件(在 TestSettings 属性中指定)运行 MSTest 活动。 您可以使用自动生成的 Traceandtestimpact.testsettings 文件,或者也可以使用选中了**“测试影响”**复选框的另一个测试设置文件。 有关详细信息,请参阅如何:收集数据来检查在代码更改后应该运行的测试

  • GetImpactedTests 活动已成功识别上一个生成。 有关更多信息,请参见下一节。

GetImpactedTests 活动如何识别上一个生成

GetImpactedTests 活动通过比较当前生成和上一个生成来生成其结果。 该活动通过以下过程来识别上一个生成:

  1. 如果指定 BaselineBuildDropLocation 属性,则生成了这些二进制文件的生成将被识别为上一个生成。

  2. 如果未指定 BaselineBuildDropLocation 属性,该活动将通过在数据仓库中搜索符合以下所有条件的最新生成来识别上一个生成:

    • 该生成与当前生成具有相同的 BuildDefinitionUri

    • 该生成的 Status 为 Succeeded 或 PartiallySucceeded。

    • 该生成具有 DropLocation

    • 该生成不是封闭签入生成或专用生成。

GetImpactedTests 结果属性

  • CodeChanges (CodeChangeList):返回此生成和上一个生成之间对代码中的每个方法进行的更改的列表。 这些方法在 Microsoft 中间语言 (MSIL) 级别进行分析。

  • ImpactedTests (TestList):返回受上一个生成和此生成之间的代码更改影响的测试的列表。

GetImpactedTests 参数属性

  • 杂项

    • Build:必须提供生成的 IBuildDetail 对象。 您可以使用 GetBuildDetail 活动获取对此对象的引用。
  • 杂项

    • Assemblies (IEnumerable<String>):必须指定要此活动检查的程序集的列表。 您通常在此生成中生成这些程序集。

    • AssociatedChangesets (IList<Changeset>):可指定要与测试影响结果关联的变更集。 通常,您需要指定要生成的变更集。 您可以从 AssociateChangesetsAndWorkItems 活动获取对这些变更集的引用。

    • BinariesRoot (String):必须指定程序集所依赖的二进制文件的路径。 可以使用 GetBuildDirectory 活动获取此值。

    • Workspace (Workspace):必须提供对您的生成的工作区的引用。 您可以从 CreateWorkspace 活动的 Result 属性获取此引用。

    • BaselineBuildDropLocation (String):可指定包含您希望 GetImpactedTests 活动将其与当前生成比较的已完成生成的放置文件夹的路径。 如果未指定此属性,该活动将尝试在生成系统中查询上一个生成。 有关更多信息,请参见本节前面的“GetImpactedTests 活动如何识别上一个生成”。

返回页首

启动进程(InvokeProcess 活动)

使用 InvokeProcess 活动可启动生成服务器上的进程(运行程序)。 此活动实质上是 Start 的包装器。

InvokeProcess Result (Int32) 属性

从进程返回 ExitCode

InvokeProcess 参数属性

  • FileName (String):必须指定要启动的进程(要运行的程序)的 FileName。 例如:%ProgramFiles%\ContosoBuildUtils\MarkBins.exe

  • Arguments (String):可指定要传递到进程的命令行参数 (Arguments)。

  • EnvironmentVariables (IDictionary<String,String>):可指定其他环境变量 (EnvironmentVariables) 及这些变量的值。

  • OutputEncoding (Encoding):可指定用于读取输出 (StandardOutputEncoding) 和错误 (RedirectStandardError) 流的编码。 在很多情况下,默认值是此属性的最佳值:

    System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.InstalledUICulture.TextInfo.OEMCodePage)
    
  • WorkingDirectory (String):可指定在其中运行进程的工作目录 (WorkingDirectory)。

    例如,您可能希望针对已编译的二进制文件运行 MarkBins.exe 实用工具。 若要缩小实用工具运行的范围,您可以调用 GetBuildDirectory 并将结果放入此属性中。

显示进程中的标准输出和错误输出

  1. 在 InvokeProcess 活动中,双击**“双击以查看”**。

  2. 拖动工具框中的 WriteBuildMessage 活动,使该活动在**“处理标准输出”**下显示,并将 WriteBuildMessage Message 属性设置为 stdOutput。

  3. 拖动**“工具框”中的 WriteBuildError 活动,使该活动在“处理标准输出”**下显示,并将 WriteBuildMessage Message 属性设置为 errOutput。

使用版本控制

可使用 Team Foundation Build 活动执行以下版本控制任务:

  • 将变更集和工作项与生成关联

  • 签入封闭更改

  • 评估签入策略

  • 在版本控制中用标签标记文件

将变更集和工作项与生成关联(AssociateChangesetsAndWorkItems 活动)

使用 AssociateChangesetsAndWorkItems 活动可将每个已完成的生成与已在代码中实施的所有变更集及其关联的工作项相链接。

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

AssociateChangesetsAndWorkItems Result (IList<Changeset>) 属性

返回与生成关联的变更集。

AssociateChangesetsAndWorkItems 参数属性

  • CurrentLabel (String):将此属性保留为空。

  • LastLabel (String):将此属性保留为空。

  • UpdateWorkItems (Boolean):如果要填充与生成号关联的工作项的**“修复”**字段,可将此属性的值设置为 True。 否则,将该值设置为 False。

返回页首

签入封闭更改(CheckInGatedChanges 活动)

使用 CheckInGatedChanges 活动可进行签入以便对触发了封闭签入生成的代码更改进行版本控制。 此活动还会将生成与已经与变更集关联的工作项进行关联。

备注

若要正常运行,则必须将此活动放在您模板中的所有 MSBuild 和 MSTest 活动的实现之后。

CheckInGatedChanges Result (Changeset) 属性

返回包含要签入的更改的变更集。

CheckInGatedChanges 参数属性

  • IgnoreErrors (Boolean):仅当 CompilationStatusTestStatus 属性都具有值 Succeeded 时,才将此属性设置为 False 以允许签入文件。 将此属性设置为 True 以允许签入文件(无论这些属性的值如何都如此)。

    备注

    您可以使用 SetBuildProperties 活动设置 CompilationStatusTestStatus 属性。

  • UpdateWorkItems (String):如果要填充与生成号关联的**“修复”**字段,则将此值设置为 True。 否则,将其设置为 False。

返回页首

评估签入策略(EvaluateCheckInPolicies 活动)

使用 EvaluateCheckInPolicies 活动在生成服务器上运行签入策略。 此活动将运行对在生成定义的**“工作区”**选项卡上指定的文件夹有效的签入策略。 如果签入策略失败且生成的原因为 CheckInShelveset(封闭签入生成)或 ValidateShelveset(专用生成),则生成会失败。

重要

签入策略将在生成服务器上进行评估,而不是在开发人员的客户端计算机上进行评估。

此活动最有效的用法是通过将其与封闭签入生成结合使用来强制使用更强的质量管制。 如果以这种方式使用此活动,则会阻止用户跳过签入策略。 此活动对以下类型的签入策略最有用:

  • 内置 Work Items 签入策略

  • 设计为在生成服务器上进行评估的自定义签入策略

此活动对于评估内置 BuildsCode Analysis 签入策略无用,因为您可通过使用 MSBuild 和 MSTest 活动直接在生成中更高效地运行这些进程。

有关更多信息,请参见以下资源:

EvaluateCheckInPolicies 参数属性

  • Workspace (Workspace):必须指定要评估的工作区。 在大多数情况下,您应该将此属性设置为在 CreateWorkspace 活动的 Result 属性中初始化的变量。 如果您要创建基于 DefaultTemplate.xaml 的生成过程,则可能应使用 Workspace 变量。

返回页首

在版本控制中用标签标记文件

您可以使用 Team Foundation Build 活动用标签标记文件:

  • 用标签标记要生成的源代码

  • 用标签标记文件

用标签标记要生成的源代码(LabelWorkspace 活动)

您应该用标签标记版本控制中的源代码文件,使您的团队能轻松标识在给定的已完成生成中包含的每个文件的版本。 使用 LabelWorkspace 活动可将此步骤包含在生成过程中。

LabelWorkspace 参数属性

  • Name (String):必须指定标签的名称。

  • Child (LabelChildOption):可指定已具有与您指定的标签匹配的标签的项的处理方式。 此属性与 tf label 命令的 /child 选项等效。

  • Workspace (Workspace):必须提供对此生成的工作区的引用。 在大多数情况下,您应该将此属性设置为在 CreateWorkspace 活动的 Result 属性中初始化的变量。 如果您要创建基于 DefaultTemplate.xaml 的生成过程,则可能应使用 Workspace 变量。

  • Comment (String):可为标签指定注释。 此属性与 tf label 命令的 /comment 选项等效。

  • Scope (String):可为标签指定范围。 此属性与 tf label 命令的 @scope 参数等效。

有关 tf label 参数的更多信息,请参见Label Command (Team Foundation Version Control)

返回页首

用标签标记文件(LabelSources 活动)

使用 LabelSources 活动可用标签标记版本控制中的文件。

提示

如果使用 LabelWorkspace 活动,则可以频繁地用标签标记您要更有效地生成的源代码文件。

LabelSources 参数属性

  • Items (IEnumerable<String>):必须指定要用标签标记的项。 每个 String 都与 tf label 命令的 itemspec 参数等效。

  • Name (String):必须指定标签的名称。

  • Scope (String):必须指定标签的范围。 此属性与 tf label 命令的 @scope 参数等效。

  • Recursion (RecursionType):如果要用标签标记目录层次结构中的所有文件,则可指定 Microsoft.TeamFoundation.VersionControl.Client.RecursionType.Full。 否则,可指定 Microsoft.TeamFoundation.VersionControl.Client.RecursionType.OneLevel。

  • Version (String):必须提供要用标签标记的项的版本。 此属性与 tf label 命令的 /version 选项等效。

  • Child (LabelChildOption):可指定已具有与您指定的标签匹配的标签的项的处理方式。 此属性与 tf label 命令的 /child 选项等效。

  • Comment (String):可为标签指定注释。 此属性与 tf label 命令的 /comment 选项等效。

有关 tf label 参数的更多信息,请参见Label Command (Team Foundation Version Control)

返回页首

获取搁置集列表(QueryShelvesets 活动)

使用**“QueryShelvesets”**活动可获取满足您条件的搁置集的列表。 然后您可使用 TfUnshelve 活动检索任一搁置集的内容。

QueryShelvesets 结果 (IList<Shelveset>)

QueryShelvesets 参数属性

TfGet 活动

此活动包装 Get 命令

TfResolve 活动

此活动包装 Resolve Command

TfShelve 活动

此活动包装 Shelve 命令

TfUndo 活动

此活动包装 Undo 命令

TfUnshelve 活动

此活动包装 Unshelve 命令

TfWorkfold 活动

此活动包装 Workfold Command

使用工作项

您可以通过 Team Foundation Build 活动来使用工作项:

  • 将变更集和工作项与生成关联

  • 创建工作项

创建工作项(OpenWorkItem 活动)

使用 OpenWorkItem 活动创建工作项。

OpenWorkItem Result (WorkItem) 属性

返回新工作项。

OpenWorkItem 参数属性

  • AssignedTo (String):必须指定要向其分配工作项的人。

  • Title (String):必须指定工作项的标题。

  • Type (String):必须指定工作项的类型。 典型的 Type 值包括以下示例:“Bug”、“Issue”和“Task”。

  • Comment (String):可向工作项的历史记录添加注释。

  • CustomFields (IDictionary<String,String>):可指定工作项的一个或多个其他字段的值。

返回页首

使用符号数据

您可以通过两个 Team Foundation Build 活动来使用符号数据:IndexSources 和 PublishSymbols。

这些活动的典型用法是启用 IntelliTrace 调试。 如果要启用 IntelliTrace 调试,则应先调用 IndexSources 活动来准备符号数据,然后应调用 PublishSymbols 活动将该数据发布到 SymStore 符号存储区。

有关 IntelliTrace 调试的更多信息,请参见通过使用 IntelliTrace 记录代码执行来调试应用

将版本控制路径和版本嵌入 PDB 文件中的符号数据中(IndexSources 活动)

使用 IndexSources 活动将版本控制路径和版本嵌入到 .pdb 文件中的符号数据中。

IndexSources 参数属性

  • FileList (IEnumerable<String>):必须指定每个符号文件的完整路径和名称。 您可以使用 FindMatchingFiles 活动提供此参数。

    您可以使用 ** 指定递归搜索。 例如,可以通过在 MatchPattern 属性中使用以下值来调用 FindMatchingFiles:String.Format("{0}\**\*.pdb", BinariesDirectory)。

返回页首

将符号发布到 SymStore 符号存储区(PublishSymbols 活动)

使用 PublishSymbols 活动可将 PDB 文件中的符号数据发布到 SymStore 符号存储区。 此活动实质上是 SymStore.exe 的包装器。 有关 SymStore 符号存储区和如何准备 SymStore 符号存储区的信息,请参见为符号数据编制索引并发布

重要

如果并发生成尝试发布到相同的符号文件共享,则数据可能会损坏。为了降低此风险,您应仅在 SharedResourceScope 活动内部调用此活动。

PublishSymbols Result (String) 属性

返回 SymStore.exe 返回的事务 ID。

PublishSymbols 参数属性

  • FileList (IEnumerable<String>):必须指定每个符号文件的完整路径和名称。 您可以使用 FindMatchingFiles 活动提供此参数。

    例如,可以通过在 MatchPattern 属性中使用以下值来调用 FindMatchingFiles:String.Format("{0}\**\*.pdb", BinariesDirectory)。

  • StorePath (String):必须指定 SymStore 符号存储区的根文件夹的 UNC 文件路径。

  • CommandLineArguments (String):有关您可传递到 SymStore.exe 的其他参数的信息,请参阅 SymStore 命令行选项

  • Comments (String):可指定事务注释,这些注释记录在符号存储区中的事务历史记录文件中。 此属性与 SymStore.exe 命令的 /c Comment 参数等效。 有关详细信息,请参阅 SymStore 命令行选项

  • ProductName (String):可指定产品名称,该名称记录在符号存储区中的事务历史记录文件中。 例如,您可以将此属性设置为生成定义名称 (Name),该名称可通过调用 GetBuildDetail 从 BuildDefinition 属性获取。 此属性与 SymStore.exe 命令的 /t Product 参数等效。 有关详细信息,请参阅 SymStore 命令行选项

  • StoreCompressed (Boolean):可将此值设置为 True,以便以压缩文件的形式将文件存储在符号存储区中。 否则,这些文件将以未压缩的形式存储。 此属性与 SymStore.exe 命令的 /compress 参数等效。 有关详细信息,请参阅 SymStore 命令行选项

  • Version (String):例如,您可以将此属性设置为生成号 (BuildNumber),该编号可通过调用 GetBuildDetail 获取。 此属性与 SymStore.exe 命令的 /v Version 参数等效。 有关详细信息,请参阅 SymStore 命令行选项

返回页首

获取对有用对象的引用

您可以通过使用 Team Foundation Build 活动来获取对有用对象的引用。

获取对团队项目集合的对象的引用(GetTeamProjectCollection 活动)

使用 GetTeamProjectCollection 活动可从其 Result 属性获取对 TfsTeamProjectCollection 对象的引用。 此起始对象很重要;例如,您可以使用它连接 Team Foundation 的应用层服务器。

获取对 IBuildAgent 对象的引用(GetBuildAgent 活动)

使用 GetBuildAgent 活动可从其 Result 属性获取对 IBuildAgent 对象的引用。 您只能在 AgentScope 活动内使用此活动。

获取对 IBuildDetail 对象的引用(GetBuildDetail 活动)

使用 GetBuildDetail 活动可从其 Result 属性获取对 IBuildDetail 对象的引用。 您可以使用此对象在某些事例集中获取有关当前生成的数据。

返回页首

获取对 BuildEnvironment 对象的引用(GetBuildEnvironment 活动)

使用 GetBuildEnvironment 活动可通过其 Result 属性获取对 BuildEnvironment 对象的引用。 您通常可以使用此属性执行下列任务:

  • 使用 Environment 对象可确定工作流的当前段是在生成控制器上运行还是在生成代理上运行。

  • 使用 CustomAssemblyPath 对象可获取包含生成代理上的自定义活动的程序集的路径。

返回页首

不应用于在自定义生成过程中进行修改的活动

某些活动不应用于在自定义生成过程中进行修改。

ApproveRequestForCheckIn

忽略此活动。

返回页首

CreateWorkspace 活动

忽略此活动。

返回页首

DeleteWorkspace

忽略此活动。

返回页首

GenerateRunSettings

忽略此活动。

返回页首

GetApprovedRequests

忽略此活动。

返回页首

GetPendingChanges

忽略此活动。

返回页首

GetRejectedRequests

忽略此活动。

返回页首

GetReshelvedShelveset

忽略此活动。

返回页首

GetShelvedChanges

忽略此活动。

返回页首

GetWorkspace

忽略此活动。

返回页首

ParseWorkspaceSpec

忽略此活动。

返回页首

RejectRequestFromCheckIn

忽略此活动。

返回页首

RetryRequest

忽略此活动。

返回页首

RetryRequests

忽略此活动。

返回页首

RevertWorkspace

忽略此活动。

返回页首

RunOnce

未记录在当前版本中。

SyncWorkspace

忽略此活动。

返回页首

SynchronizeRequests

忽略此活动。

返回页首

TfsBuild 活动

忽略此活动。

返回页首

TfQueryConflicts

忽略此活动。

返回页首

请参见

概念

对生成过程使用默认模板

部署和配置生成控制器

部署和配置生成代理

其他资源

Visual Studio 2010 工作流设计器

Windows Workflow Foundation

MSBuild 参考

查看生成结果