用途:把本地构建的 MSBuild 二进制替换 Visual Studio 自带的 MSBuild,让 VS 内的构建(Ctrl+Shift+B、生成解决方案、设计时构建)使用本地改动,并支持调试与还原。仅需命令行测试时建议改用 bootstrap 方式,更快且不会破坏 VS 安装。
前提:Windows;已安装 Visual Studio 2022 或更高(含 2026 及预览版);管理员 PowerShell(需写入 Program Files);MSBuild 仓库已克隆且可构建。
主要步骤:1) 在仓库根目录运行 .\build.cmd(默认 Debug,可用 .\build.cmd /p:Configuration=Release),产物位于 artifacts\bin\MSBuild.Bootstrap{configuration}\。2) 定位 VS 的 MSBuild Bin 目录,通用路径为 C:\Program Files\Microsoft Visual Studio{version}{edition}\MSBuild\Current\Bin,可用 vswhere 自动查找。3) 以管理员 PowerShell 运行 .\scripts\Deploy-MSBuild.ps1 -destination "...\MSBuild\Current\Bin"。脚本参数含 -configuration(默认 Debug,需与构建一致)、-runtime(默认 Detect,VS 用 Desktop)、-binDirectory、-makeBackup(默认 $true,生成带时间戳的 Backup-* 文件夹)。4) 关闭并重开 VS 后构建验证。
还原:从 Backup-{timestamp} 文件夹复制回原目录,或运行 Visual Studio Installer → 修改 → 修复。注意覆盖 MSBuild 可能导致 VS 本身损坏,务必保留备份。
调试:设置 $env:MSBuildDebugBuildManagerOnStart = "1" 与 $env:MSBuildDebugProcessName = "devenv" 后启动 devenv.exe,可在 BuildManager.BeginBuild 断点;设置 $env:MSBUILDDEBUGONSTART = "1" 可在 MSBuild 入口断点;设置 $env:MSBuildDebugEngine = "1"(可选 $env:MSBUILDDEBUGPATH)可捕获 VS 完整二进制日志。
其他:可部署到 .NET SDK(-destination "C:\Program Files\dotnet\sdk\10.0.100" -runtime Core);无法在目标机构建时,可先部署到空文件夹再复制过去,并手动备份。常见问题包括权限不足、VS 无法启动、改动未生效、配置不匹配等,均有对应处理方式。