TFS2010 - 记录自定义构建活动

时间:2012-04-18 07:11:46

标签: tfs build tfs2010

我们有一个自定义构建活动,它执行构建的执行。我们使用自定义活动,因为我们使用的编译器非常特殊,系统很老,我们不想重写整个事情,以便它可以与MSBuild一起使用。但是,存储库由TFS管理,构建应由TFS触发。

在自定义构建活动中,我想记录状态。目前,我正在使用这段C#代码:

private void LogMessage(String message, CodeActivityContext context)
        {
           BuildInformationRecord<BuildMessage> record =
             new BuildInformationRecord<BuildMessage>()
             {
                 Value = new BuildMessage()
                    {
                        Importance = BuildMessageImportance.High,
                        Message = message,
                    },
             };

            context.Track(record);
        }

它有效但是有一个大问题:我们的自定义构建活动需要大约6个小时才能执行(正如我所说,这是一个旧的,也是一个大型软件项目)。问题是,一旦构建操作完成,日志消息才会出现在TFS构建摘要中。因此,在构建6小时后,所有日志消息都会立即出现。

我们希望消息在记录时显示。因此构建人员可以看到当前构建的位置,并且还可以看到发生了什么。

到目前为止,我实现的一个解决方法是让自定义构建活动使用与工作流基础部分共享的消息队列。然后,在工作流基础内,我创建了一个并行语句,它执行构建,同时清空消息队列并显示它们。以下是该构造的屏幕截图:

enter image description here

然而,结果非常令人失望。这就是出现的结果:

enter image description here

红色的是实际的构建日志消息,它周围的一切都只是while循环和其他东西......

是否可以关闭这些日志消息?

2 个答案:

答案 0 :(得分:4)

您可以尝试在Build Process Template XAML上设置以下属性(无法通过设计器完成)来抑制消息:

mtbwt:BuildTrackingParticipant.Importance="None"

来自我的模板的示例:

<InvokeMethod DisplayName="Delete File" mtbwt:BuildTrackingParticipant.Importance="None" ... />

答案 1 :(得分:1)

mtbwt:BuildTrackingParticipant.Importance="Low"/"None"仅控制通话(我猜)。而是使用mtbwt:BuildTrackingParticipant.TrackingOption="None",它似乎完全摆脱了通话中的所有跟踪消息。