ビルドの実行を行うカスタムビルドアクティビティがあります。私たちはカスタムアクティビティを使用します。これは、使用するコンパイラが非常に特殊で、システムがかなり古いため、MSBuildで動作するようにすべてを書き直したくないからです。ただし、リポジトリはTFSによって管理され、ビルドはTFSによってトリガーされます。TFS2010 - カスタムビルドアクティビティ内のログ
カスタムビルドアクティビティでは、ステータスをログに記録します。現在、私は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時間のビルド後、すべてのログメッセージが一度に表示されます。
私たちが望むものは、メッセージがログに記録されるときに表示されることです。ビルド・ガイはビルドが現在どこにあるかを知ることができ、また何が起こったのかを見ることができます。
これまでに実装した回避策の1つは、カスタムビルドアクティビティにワークフローの基礎部分と共有されるメッセージのキューを使用させることです。その後、ワークフローの基礎の中で、ビルドを実行すると同時にメッセージのキューを空にして表示するパラレル・ステートメントを作成しました。
しかし、結果はかなり残念です。ここではその構造のスクリーンショットです。これが出てくるものです:
赤いのは、実際のビルドログメッセージで、その周りのすべてがちょうどwhileループや他のものである...
がそれらを切り替えることが可能ですメッセージをログオフしますか?
ありがとう、それはかなり良いです。私は "While"と "Sequence"メッセージを取り除きましたが、 "VisualBasicValue"メッセージを取り除くことができませんでした。それらは2つのwhileループと最も外側のdo-whileループの内部の条件です。それを抑えることも可能ですか? –
Christian