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);
        }

動作しますが、大きな問題が 1 つあります。カスタム ビルド アクティビティの実行には約 6 時間かかります (前述のとおり、これは古くて大規模なソフトウェア プロジェクトです)。問題は、ビルド アクションが完了すると、ログ メッセージが TFS ビルド サマリー内にのみ表示されることです。そのため、ビルドの 6 時間後に、すべてのログ メッセージが一度に表示されます。

私たちが望んでいるのは、メッセージがログに記録されたときに表示されることです。ビルド担当者がビルドの現在の場所を確認し、何が起こったかを確認できるようにします。

これまでに実装した回避策の 1 つは、カスタム ビルド アクティビティで、ワークフロー基盤部分と共有されるメッセージのキューを使用することです。次に、ワークフロー基盤内で、ビルドを実行すると同時にメッセージのキューを空にして表示する並列ステートメントを作成しました。その構成のスクリーンショットを次に示します。

ここに画像の説明を入力

しかし、結果はかなり残念です。これは出てくるものです:

ここに画像の説明を入力

赤いものは実際のビルド ログ メッセージです。その周りのすべては while ループとその他のものです...

これらのログ メッセージをオフにすることはできますか?

4

2 に答える 2

4

ビルド プロセス テンプレート 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 に答える