ビルドの実行を実行するカスタム ビルド アクティビティがあります。カスタム アクティビティを使用します。これは、使用するコンパイラが非常に特殊であり、システムがかなり古いため、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 ループとその他のものです...
これらのログ メッセージをオフにすることはできますか?