关于 msbuild-server
msbuild-server 面向反复运行 .NET 命令行构建的开发者,指导启用 MSBuild Server 缓存评估结果,并通过连续构建检查效果、在排查时关闭服务器。
主要功能
- 01启用 MSBuild Server
- 02按 Shell 设置环境变量
- 03比较连续构建耗时
- 04排查问题时关闭服务器
适用场景
- 01加快反复进行的增量命令行构建
- 02在 CI 中连续执行多次构建
- 03排查启用服务器后的构建问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dotnet/ skills --skill msbuild-server安装后在 Claude Code 中输入/msbuild-server确认已加载。
详细介绍
用于 CLI 缓存的 MSBuild Server
使用 MSBuild Server 在 CLI 构建之间缓存评估结果,获得与 Visual Studio 长期运行的 MSBuild 进程相同的性能优势。
适用场景
- CLI(
dotnet build)的小型增量构建速度低于预期 - 开发者发现,同一项目在 VS 中的构建速度比在 CLI 中更快
- CI Agent 会对同一代码仓库连续执行多次构建
不适用场景
- 基于 IDE 的构建(Visual Studio 已使用长期运行的 MSBuild 进程)
- 可以接受冷启动开销的一次性构建
- 怀疑存在构建正确性问题(禁用服务以隔离问题)
输入
| 输入 | 必填 | 描述 |
|---|---|---|
| Shell 上下文 | 否 | 设置环境变量的 Shell(bash、PowerShell 或 Windows 持久环境) |
工作流
步骤 1:确认 CLI 上下文
确认开发者是从命令行(dotnet build)而非 Visual Studio 或其他 IDE 进行构建。MSBuild Server 在 IDE 中无法带来任何好处。
步骤 2:设置环境变量
# Bash / CI
export MSBUILDUSESERVER=1
# PowerShell
$env:MSBUILDUSESERVER = "1"
# Windows (persistent)
setx MSBUILDUSESERVER 1
步骤 3:验证性能提升
连续对同一项目执行两次构建,并比较耗时:
- 第一次构建(冷启动):
dotnet build-- 服务启动,不会获得缓存优势 - 第二次构建(热启动):
dotnet build-- 速度应明显更快
对于包含许多项目或复杂 Directory.Build.props 链的代码仓库,性能提升最为明显。
验证
- Shell 中已设置
MSBUILDUSESERVER=1 - 第二次连续构建比第一次更快
- 执行
dotnet build-server shutdown后再重新构建,确认服务能够正常重启
常见问题
| 问题 | 解决方案 |
|---|---|
| 期望 Visual Studio 中也能提升性能 | VS 已使用长期运行的 MSBuild 节点;该服务不会带来额外好处 |
| 启用后出现构建正确性问题 | 运行 dotnet build-server shutdown 进行重置;如果问题仍然存在,请禁用该服务 |
| 服务进程占用的内存超出预期 | 服务会在后台持续运行;空闲时使用 dotnet build-server shutdown 将其关闭 |
评论
支持 Markdown