用途:诊断并修复 .NET 构建性能问题,覆盖增量构建失效、二进制日志分析、并行构建、构建缓存与 NuGet 还原优化。适用于 SDK 风格项目,版本假设为 .NET 8.0+ SDK(MSBuild 17.8+)。
主要能力:
- 增量构建失效诊断:按“发现症状→抓取二进制日志→定位目标→判断失效原因→修复”的流程排查。常见原因包括自定义目标缺少 Inputs/Outputs、Copy 未设 SkipUnchangedFiles="true" 导致时间戳被刷新、生成器无条件写文件、上游中间文件被反复重写。
- 二进制日志分析:使用 dotnet build /bl 或 dotnet build /bl:build-debug.binlog 生成日志,配合 MSBuild Structured Log Viewer(msbuildlog.com)查看 Timeline、Target Results、Search、Properties、Items。可用 dotnet msbuild MyApp.csproj -pp 输出预处理后的项目文件,查看导入、属性求值与项列表。
- 并行构建:dotnet build 默认启用 /m;可显式指定 /m:4、/m:1;/graph 模式先分析依赖图再调度,适合 50+ 项目的大型解决方案。MSBuild 任务可用 BuildInParallel="true"。
- 缓存与还原优化:dotnet restore --locked-mode 跳过依赖解析;RestorePackagesWithLockFile 启用锁文件;CI 中可缓存 ~/.nuget/packages。
使用方式:先抓取二进制日志,再在 Structured Log Viewer 中搜索“Building target”与“Skipping target”,定位未跳过的目标并检查其 Inputs/Outputs 与时间戳。
限制与注意:二进制日志含完整路径与环境变量,可能含敏感信息,分享前需审查;不要用 /v:diagnostic 代替 /bl;小解决方案(少于 5 个项目)并行开销可能超过收益;CI 未使用 --locked-mode 时锁文件无效。MSBuild 错误解读、CI 漂移诊断、MSBuild 编写、自定义任务、锁文件与 CPM 配置分别由其他技能负责,本技能不覆盖。资料未提供具体收费、平台与效果数据。