binlog-failure-analysis について
`.binlog` ファイルから MSBuild のビルド失敗を調べるスキルです。ビルドエラーや警告を調査する開発者向けで、同梱の binlog MCP サーバーによる構造化クエリを優先し、利用できない場合はテキストログへの再生に切り替えます。
主な機能
- 01エラーと警告の確認
- 02プロパティ、項目、評価データの照会
- 03ターゲット実行と埋め込みファイルの確認
- 04binlog のテキストログへの再生
活用シーン
- 01MSBuild ビルド失敗の原因調査
- 02binlog に記録されたプロジェクトデータの確認
- 03MCP が使えない場合の診断継続
MCP 対応
`binlog` 名前空間で提供される同梱の `Microsoft.AITools.BinlogMcp` サーバーを使い、`.binlog` ファイルを照会します。サーバーを利用できない場合のテキストログ再生手順もあります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dotnet/ skills --skill binlog-failure-analysisインストール後、Claude Code で/binlog-failure-analysisを入力して読み込まれたか確認します。
詳細
バイナリログを使用した MSBuild の失敗分析
このスキルでは、.binlog ファイルから MSBuild のビルド失敗を診断します。推奨される方法は、このプラグインに同梱されている binlog MCP サーバー(binlog MCP 名前空間で公開される Microsoft.AITools.BinlogMcp)を使用することです。MCP サーバーを利用できない場合、修復を希望するときは troubleshoot-binlog-mcp を使って起動の問題を診断してください。修復がブロックされた場合、拒否された場合、またはこのタスクに不要な場合は、末尾の binlog の再生ワークフローに進んでください。
主なワークフロー — binlog MCP
MCP サーバーには、テキストログを解析せずに .binlog を調査するための構造化ツールが用意されています。binlog をテキストファイルに再生するのではなく、ツールを直接呼び出してください。利用可能なツールがわからない場合は、まず MCP の tools/list を呼び出してください。
重要な制約:
.binlogファイルはバイナリ形式です。cat、head、stringsを実行したり、直接読み取ったりしないでください。照会には MCP ツールのみを使用してください。- 元のソースファイルやプロジェクトファイルがディスク上に存在するとは限りません。プロジェクトファイル(.csproj、.props、.targets、App.config など)がディスク上で見つからない場合、MCP ツール(埋め込みファイルやソースファイルの取得など)を通じてのみ binlog 内から読み取れます。
- 調査しながら、判明したことをまとめてください。 調査に時間を使い切らないでください。十分な証拠が得られたら、結論を提示してください。調査の途中でタイムアウトするより、根拠を明確にした部分的な回答のほうが適切です。
利用可能な MCP サーバーツールを使って、バイナリログから以下を照会してください。
- ビルドエラーと警告
- MSBuild プロパティとその値
- MSBuild 項目(PackageReference、ProjectReference など)
- プロジェクトの評価データ
- ターゲットの実行詳細
- binlog に埋め込まれたファイルの内容
フォールバックワークフロー — テキストログへの再生(MCP を利用できない場合)
MCP サーバーを起動できない場合(古い SDK やオフライン環境など)にのみ使用してください。
binlog をテキストログに再生する
dotnet msbuild build.binlog -noconlog \
-fl "-flp:v=diag;logfile=full.log;performancesummary" \
-fl1 "-flp1:errorsonly;logfile=errors.log" \
-fl2 "-flp2:warningsonly;logfile=warnings.log"
PowerShell に関する注意:
-flp:"v=diag;logfile=full.log;performancesummary"を使用してください (セミコロンを引用符で囲みます)。
テキストログを検索する
cat errors.log
grep -n -B2 -A2 "CS0246" full.log
grep -i "CoreCompile.*FAILED\|Build FAILED\|error MSB" full.log
grep 'Target "CoreCompile"' full.log | grep -oP 'project "[^"]*"'
binlog の生成(存在しない場合のみ)
dotnet build /bl:build.binlog