TFSBuild 2010自定义活动:IBuildDetail.LastGoodBuildUri == null?

时间:2011-05-19 19:18:22

标签: tfs2010 tfsbuild

我正在尝试使用自定义工作流活动来根据以前成功的构建自动增加构建号。这种方法适用于基于MSBuild的“工作流”,但我似乎无法让TFS为当前正在运行的构建定义报告正确的“最后良好构建”。

我正在做的很简单:

IBuildDetail build = context.GetExtension<IBuildDetail>();
IBuildDetail last = build.BuildServer.GetBuild(build.BuildDefinition.LastGoodBuildUri);

我已经运行了一个成功的构建,我的代码活动强制建立一个BuildName_1.0.0.0。但是,当我尝试获取此版本并提取版本号时,GetBuild会抱怨LastGoodBuildUri为空。

我正在使用的自定义构建模板最后将CompilationStatusTestStatus设置为BuildPhaseStatus.Succeeded,因此TFS应该能够告诉您这是一个很好的构建。我还缺少什么?

1 个答案:

答案 0 :(得分:1)

由于您在自定义活动中运行此代码,因此您需要确保:

  1. 构建(IBuildDetail)已完成并在此自定义活动的计划之前保存到服务器。
  2. 刷新IBuildDetail实例或IBuildDefinition实例(build.BuildDefinition),以便从服务器获取最新更改。
  3. 您可以使用IBuildDetail.IsFinished检查您的构建是否已完成。如果完成,请使用IBuildDefinition.Refresh()刷新BuildDefinition对象。

    希望这有帮助。