使用 Microsoft Binlog MCP 服务器进行AI驱动的MSBuild调查——.NET博客

Microsoft .NET Blog 2026-06-23T15:11:01.463982

使用 Microsoft Binlog MCP 服务器进行AI驱动的MSBuild调查——.NET博客

MSBuild 二进制日志(.binlog 文件)包含关于构建的丰富信息——每个属性求值、目标执行、任务调用、错误和警告。但手动浏览这些数据可能会让人不知所措,尤其是在调试复杂的多项目解决方案时。如果你的 AI 编码助手能为你进行调查呢?

今天我们推出 Microsoft Binlog MCP 服务器,这是一个 Model Context Protocol(MCP,模型上下文协议)服务器,它让 GitHub Copilot 等 AI 助手可以直接访问你的构建日志。它解析 .binlog 文件并公开 15 个专用工具,支持 AI 驱动的构建失败诊断、属性追踪、性能分析和构建比较——全部通过自然语言对话完成。

为什么为构建日志使用 MCP?

Model Context Protocol(MCP)是一个开放标准,它允许 AI 助手以结构化方式调用外部工具。通过将 MSBuild 二进制日志分析封装在 MCP 服务器中,我们赋予 AI 助手以下能力:

无需再手动翻阅 MSBuild Structured Log Viewer,你只需向 AI 助手提问,例如“我的构建为什么失败了?”或“什么让我的构建变慢了?”

AI 助手可用的 15 个工具

Microsoft Binlog MCP 服务器提供的工具分为四类:

构建调查

工具 功能说明
binlog_overview 构建状态、持续时间、项目数量、错误/警告数量
binlog_errors 构建错误,包含完整的项目、目标、任务、文件和行号上下文
binlog_warnings 构建警告,可按警告代码过滤
binlog_search 使用 StructuredLog Viewer 搜索 DSL 进行全文搜索
binlog_projects 列出所有项目及其构建状态和持续时间
binlog_properties MSBuild 属性值(精选默认值或过滤后的值)
binlog_items MSBuild 项,如 PackageReference、Compile 等
binlog_imports .props 和 .targets 文件的完整导入链
binlog_explain_property 追踪属性值的来源——是哪个文件、目标或任务设置了它

嵌入式文件

工具 功能说明
binlog_files 列出或读取构建期间捕获的源文件
binlog_search_files 在所有嵌入式源文件中搜索文本

性能分析

工具 功能说明
binlog_expensive_projects 按独占持续时间排序的最慢项目
binlog_expensive_targets 整个构建中最慢的目标
binlog_expensive_tasks 整个构建中最慢的任务

构建比较

工具 功能说明
binlog_compare 比较两个 binlog——对比属性、包等

快速入门

最简单的入门方式是通过 .NET Agent Skills 仓库。dotnet-msbuild 插件将 Microsoft Binlog MCP 服务器与精选的技能和代理捆绑在一起,用于 MSBuild 构建调查和优化。

请选择与你开发环境匹配的部分。

Visual Studio

Visual Studio 通过 GitHub Copilot 的代理模式(Visual Studio 17.14 或更高版本)支持 MCP 服务器。安装 dotnet-msbuild 插件后,Copilot Chat 在代理模式下会自动发现 Microsoft Binlog MCP 服务器。打开 Copilot Chat 窗口,切换到代理模式,binlog_* 工具便可用于任何关于解决方案中 .binlog 文件的对话。

Visual Studio Code

在 VS Code 中,启用插件支持并将市场添加到你的 settings.json

{
  "chat.plugins.enabled": true,
  "chat.plugins.marketplaces": ["dotnet/skills"]
}

然后从市场中安装 dotnet-msbuild 插件——Binlog MCP 服务器会自动配置好。

希望直接连接 MCP 服务器?将其添加到 .vscode/mcp.json

{
  "servers": {
    "binlog-mcp": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["tool", "run", "Microsoft.AITools.BinlogMcp"]
    }
  }
}

要在启动时预加载特定的 binlog,传入 --binlog 参数:

{
  "servers": {
    "binlog-mcp": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["tool", "run", "Microsoft.AITools.BinlogMcp", "--", "--binlog", "msbuild.binlog"]
    }
  }
}

命令行(Copilot CLI / Claude Code)

对于基于终端的 AI 助手,如 GitHub Copilot CLI 或 Claude Code,直接从 dotnet/skills 市场安装插件:

/plugin marketplace add dotnet/skills
/plugin install dotnet-msbuild@dotnet-agent-skills

重启你的助手,binlog_* 工具即可使用。你可以通过 /skills 验证它们是否已加载。

提示: 要生成二进制日志,请在 dotnet builddotnet testdotnet pack 命令后添加 /bl——例如:dotnet build /bl

示例:诊断构建失败

一旦 MCP 服务器运行起来,并且你的 AI 助手可以访问 .binlog 文件,你就可以通过对话方式调查构建问题。下面是典型的工作流程:

对于性能调查,AI 使用 binlog_expensive_projectsbinlog_expensive_targetsbinlog_expensive_tasks 工具来识别瓶颈并推荐优化方案。

亲自尝试:比较两个构建

以下是立即上手体验 MCP 服务器的好方法。选择一个你定期构建的仓库——可以是你的产品,也可以是开源项目,如 dotnet/msbuildmicrosoft/testfx——并从不同版本或配置中捕获两个二进制日志:

# 构建版本 A
git checkout main
dotnet build /bl:build-a.binlog

# 构建版本 B(不同分支、SDK 或配置)
git checkout my-feature-branch
dotnet build /bl:build-b.binlog

然后向 AI 助手提问:

“比较 build-a.binlog 和 build-b.binlog。哪些 MSBuild 属性和包版本发生了变化?这些变化是否影响了构建性能?”

在后台,助手调用 binlog_compare 比较属性和包,然后对两个日志使用 binlog_expensive_projectsbinlog_expensive_targets,将更改与时间差异关联起来——将过去繁琐的并排日志比较变成了一次对话。

基于 StructuredLogger

Microsoft Binlog MCP 服务器底层使用 MSBuild Structured Log Viewer 库——与流行的 MSBuild Structured Log Viewer 桌面应用使用相同的引擎。binlog_search 工具支持完整的 StructuredLog Viewer 搜索 DSL,包括节点类型过滤器($error$warning$task$target$project)、使用 under() 的层级作用域,以及使用引号字符串的精确短语匹配。

遥测

查看原文