您仍在使用 MSBuild 脚本,因此我假设您正在使用升级模板。您可以克隆/编辑或修改升级模板,以便模板采用当前构建原因并通过 Run TfsBuild for Configuration Folder 活动将其传递给 MSBuild。在 Visual Studio 中打开模板进行编辑,然后执行以下操作:
选择在代理上运行活动并转到变量选项卡。创建一个新变量来存储构建原因并使用来自 IBuildDetail 的信息填充其默认值。在变量列表中添加如下内容:
Name: currentBuildReason
Variable type: String
Scope: Run On Agent
Default: BuildDetail.Reason.ToString()
接下来,单击 Run TfsBuild for Configuration Folder 活动的属性对话框。选择 CommandLineArgument 省略号以打开将参数传递给 TFSBuild 的对话框。您可能只看到列出了一个变量:
MSBuildArguments
您现在可以将当前构建原因添加到命令行参数(并且仍然传递任何现有的 MSBuildArguments),类似于:
String.Format("/p:CurrentBuildReason={0} {1}", currentBuildReason, MSBuildArguments)
单击“确定”关闭对话框。这会将当前构建原因作为名为 CurrentBuildReason 的新参数传递,并且可以在您的 MSBuild 脚本中以 $(CurrentBuildReason) 的形式引用。
保存并签入升级模板。
将模板分配给构建定义。该定义使用的 MSBuild 脚本现在可以使用上述变量。