1

我们有一个自定义构建活动,它执行我们的构建。我们使用自定义活动,因为我们使用的编译器非常特殊,而且系统很旧,我们不想重写整个东西以便它与 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 个小时的构建,所有日志消息都会立即出现。

我们想要的是消息在记录时显示。这样构建人员就可以看到当前构建在哪里,也可以看到发生了什么。

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

在此处输入图像描述

然而,结果相当令人失望。这就是结果:

在此处输入图像描述

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

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

4

2 回答 2

4

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

mtbwt:BuildTrackingParticipant.Importance="None"

我的模板中的示例:

<InvokeMethod DisplayName="Delete File" mtbwt:BuildTrackingParticipant.Importance="None" ... />
于 2012-04-18T09:15:22.007 回答
1

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

于 2014-06-18T12:50:37.573 回答