【问题标题】:What happened to the "Reason" property in TFS 2010 BuildsTFS 2010 Builds 中的“原因”属性发生了什么变化
【发布时间】:2012-10-31 15:46:44
【问题描述】:

当我们使用 TFS 2008 (SP1) 时,我们曾经能够访问“原因”MSBuild 属性,其中包含构建运行的原因。这在构建开始后就可用,因此不需要任务/目标来获取它。现在我们正在使用 TFS 2010(和 MSBuild/升级模板,而不是工作流)并且不再填充该属性。我可以编写一个自定义任务来从 IBuildDetail 检索信息,但是我的 MSBuild 脚本没有立即可用的属性吗?我曾经能够根据构建原因进行有条件的 MSBuild 脚本导入,但如果我必须使用任务/目标来获取原因,这将不起作用。

【问题讨论】:

    标签: tfs msbuild tfsbuild


    【解决方案1】:

    您仍在使用 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 脚本现在可以使用上述变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      相关资源
      最近更新 更多