使用 VS Code 中的 Copilot 分析 MSBuild 二进制日志
你肯定遇到过这种场景:CI 流水线爆红,或者昨天还只要 8 秒的构建,今天突然涨到 40 秒,而你只能盯着满屏的 MSBuild 输出,努力寻找那条真正有用的信息。答案几乎总藏在二进制日志(.binlog)里——它记录了构建过程中每一个项目、目标、任务、属性和诊断信息。问题是,要读取这些日志,你得先打开一个独立的查看器,并且预先知道该往哪里看。如果能直接“问”出来呢?这就是 MSBuild Binlog Analyzer for VS Code 的初衷——现已作为预览版上架 Visual Studio Marketplace。
这个扩展把二进制日志分析直接搬进了你的编辑器,把繁琐的排查工作交给 GitHub Copilot Chat——让你不打断思路,继续交付代码。如果你只想让一个代理自动帮你分析构建(比如在 CI 中无人值守),可以看看 Microsoft Binlog MCP Server——同样的分析引擎,无界面驱动。这篇文章介绍的是在编辑器内交互式体验的部分。
它解决了哪些问题
构建日志是你手中最好的证据,也是最让人头疼的阅读材料。Binlog Analyzer 把这些证据变成了答案:
-
“我的构建为什么失败了?”
直接得到用大白话描述的根因,不用再滚动浏览 NuGet 还原日志——点击一下就能在 VS Code 里修复。 -
“为什么这么慢?”
列出最耗时的目标和任务,并高亮显示真正决定构建时间的关键路径。 -
“哪里变了?”
并排对比两次构建,得到详细的差异分析:耗时、诊断信息、属性和包版本——不再只是“感觉变慢了”,而是“CoreCompile慢了 14.7 秒”。 -
“增量构建工作正常吗?”
直接告诉你哪些目标被重新构建以及原因,不用靠猜。
没有上下文切换,不需要单独工具,也无需手动解读 MSBuild。
它是什么
底层上,这个扩展搭配了一个 .NET 全局工具 MCP 服务器:Microsoft.AITools.BinlogMcp,它通过模型上下文协议(Model Context Protocol,MCP)暴露了几十个构建分析工具。Copilot 调用这些工具,基于你的实际日志来给出答案——而不是凭空猜测。最棒的是,这个服务器会在首次使用时自动安装。
在 VS Code 中用 Copilot 分析 MSBuild 二进制日志
完全不需要手动配置。从 Marketplace 安装扩展后,你只需准备好 VS Code 1.99+、GitHub Copilot 和 .NET SDK。可以通过三种方式打开一个 .binlog 文件:
- 从命令面板(
Ctrl+Shift+P)选择 Binlog: Load File - 使用 Build & Collect Binlog 一步完成构建和捕获
- 从 Structured Log Viewer 中点击“在 VS Code 中打开”
然后在 Copilot Chat 中直接提问 @binlog:
@binlog why did the build fail?
@binlog what are the slowest targets?
@binlog /perf
功能亮点巡览
Binlog Explorer 是你的全貌地图
侧边栏的树形结构让整个构建过程一览无余:已加载日志、项目、错误、警告,以及一个性能分区,里面包含最慢的目标、最慢的任务、重新构建原因和分析耗时。
诊断信息也会直接显示在 VS Code 的原生 Problems 面板中,每个项目都有 CodeLens 和一个 Ask @binlog 操作——这样树中的错误只需点击一下就能获得解释。
@binlog 聊天——并一键修复构建
这才是将分析变成对话的地方。你可以提出开放式问题,也可以使用斜杠命令,例如 /errors、/perf、/timeline、/compare、/summary、/incremental 和 /buildcheck。由于参与者直接调用了 MCP 工具,每一条回答都引用了日志中的真实数据。
接下来是大家最爱的部分:Fix all issues。Copilot 会读取失败的项目,应用修复,重新构建,并加载构建前后的 binlog,让你确认修复生效——全程无需离开编辑器。想逐个处理?在任何诊断项上右键,选择 Auto-fix with Copilot 即可。
在发布前捕获回归
将任意已加载的 .binlog 设为基线,之后每次新构建都会自动与之对比。状态栏会出现一个 Build: +X% vs baseline 徽章,Regressions 节点会详细列出变化:变慢的目标、新增或移除的诊断、MSBuild 属性差异,以及 NuGet 包版本变更。你可以将任何一条回归直接交给 @binlog 深入分析。
可视化对比两个构建
Build Comparison 视图会将两个日志按目标逐行对齐并显示差异,项目图还会高亮 MCP 计算出的关键路径。
更多功能值得一试
这个扩展还内置了不少实用功能:
- 构建时间线 – targets 和 tasks 耗时的可视化柱状图,点一下就能在 Copilot 中分析。
- 优化构建 – 挑选优化项,让 Copilot 自动应用,再通过 A/B 对比验证效果。
- CI/CD 集成 – 从 Azure DevOps Pipelines 和 GitHub Actions 下载 .binlog 文件,可按分支或 PR 筛选;不离开 VS Code 就能分析 CI 构建失败的原因。
- 搜索 – 跨所有构建事件(targets、tasks、messages、properties)进行查询。
- 语言模型工具(
binlog_lm_overview、binlog_lm_errors、binlog_lm_search、binlog_lm_perf、binlog_lm_compare) – 可在 agent 模式和自定义聊天模式下使用,还附带一个预置的 Build Analysis 聊天模式,能搭配任何 agent 工作。
试试看
MSBuild Binlog Analyzer 目前处于预览阶段,正在积极开发中。你可以从 Visual Studio Marketplace 安装它,指向一个 .binlog 文件,然后向 @binlog 提问你关心的构建问题。说不定下一次红色的构建就能自己修好了。
我们非常期待你的反馈。
反馈
MSBuild Binlog Analyzer 是开放开发的,你的反馈将决定它的未来走向。如果发现了 bug、遇到了不顺手的地方,或者有新的功能想法,欢迎在 dotnet/skills 仓库 提交 issue——bug 报告、功能请求以及任何一般性反馈都来者不拒。请告诉我们哪些地方好用、哪些不好用,以及你希望接下来看到什么。
原文首发于 .NET Blog:Analyze MSBuild Binary Logs with Copilot in VS Code