2012-04-18 54 views
1

我們有一個自定義構建活動,它執行構建的執行。我們使用自定義活動,因爲我們使用的編譯器非常特殊,而且系統非常老舊,我們不想重寫整個事物,以便它能夠與MSBuild一起使用。但是,存儲庫由TFS管理,構建應由TFS觸發。TFS2010 - 在自定義構建活動中記錄

在自定義生成活動中,我想記錄狀態。

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小時(正如我所說,這是一個古老而目前,我與這片的C#代碼這樣做也是大型軟件項目)。問題是一旦構建操作完成,日誌消息就會出現在TFS構建摘要中。因此,在建立6小時後,所有日誌消息都會立即顯示。

我們希望得到的是消息在記錄時顯示。這樣構建人員就可以看到構建版本的位置,並查看發生了什麼。

到目前爲止,我實現的一種解決方法是讓自定義構建活動使用與工作流基礎部分共享的消息隊列。然後,在工作流基礎內部,我創建了一個執行構建的並行語句,同時清空消息隊列並顯示它們。下面是結構的截圖:

enter image description here

然而,結果是相當令人失望。這是什麼出來:

enter image description here

紅色爲實際生成日誌消息,它周圍的一切都只是while循環和其他東西......

是否有可能切換這些記錄消息?

回答

4

你可以嘗試設置的Build過程模板XAML(無法通過設計來實現)以下屬性壓制消息:

mtbwt:BuildTrackingParticipant.Importance="None" 

從我的模板,例如:

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

謝謝,這很不錯。我擺脫了「While」和「Sequence」消息,但我無法擺脫「VisualBasicValue 」消息。它們是兩個while循環和最外面的do-while循環中的條件。是否有可能抑制它們? – Christian 2012-04-18 09:44:50

1

mtbwt:BuildTrackingParticipant.Importance="Low"/"None"只控制電話(我猜)。而是使用mtbwt:BuildTrackingParticipant.TrackingOption="None",這似乎完全消除了調用中的所有跟蹤消息。

相關問題