研发协作
用 MSBuild 二进制日志诊断构建失败(含 MCP…
当控制台输出无法解释 MSBuild 构建错误、需要排查多项目级联失败或追踪目标执行顺序时,从已有 .binlog 文件定位根因。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 MSBuild 二进制日志诊断构建失通用
解决思路
- 优先使用随插件捆绑的 binlog MCP 服务器(Microsoft.AITools.BinlogMcp,暴露在 binlog MCP 命名空间下)来查询 .binlog,而不是把 binlog 回放成文本日志。
- 如果不确定 MCP 有哪些工具可用,先调用 tools/list 查看。
- 不要用 cat、head、strings 或直接读取 .binlog 文件——它是二进制格式,只能用 MCP 工具查询。
- 注意原始源码/项目文件(.csproj、.props、.targets、App.config 等)在磁盘上可能不存在;若找不到,只能通过 MCP 工具从 binlog 内部读取(如嵌入/源文件检索)。
- 用 MCP 工具查询 binlog 中的:构建错误与警告、MSBuild 属性及其值、MSBuild 项(PackageReference、ProjectReference 等)、项目求值数据、目标执行详情、以及嵌入在 binlog 中的文件内容。
- 边查边总结结论:一旦证据足够就给出结论,部分答案加清晰推理好过调查到超时。
- 仅当 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 生成。
适用边界 · 注意事项
- 没有现成的 .binlog 文件时(应先用 binlog-generation 生成)。
- 非 MSBuild 构建系统的问题。