SuperAPI AI 工具集

dotnet-build-optimization

通用与其它

查看项目

更新于 10-16 09:46

技能介绍

用途:诊断和修复 .NET 构建性能问题,从症状(每次构建都全量重建)追溯到根因(缺少 Inputs/Outputs、时间戳损坏、生成器副作用)再到修复。

主要能力:

  1. 增量构建失败诊断:用 dotnet build /bl 生成二进制日志,在 MSBuild Structured Log Viewer 中查看 Target Results、Timeline、Properties、Items 等视图,查找应跳过却完整执行的目标及其原因(输出不存在、输入比输出新、未声明 Inputs/Outputs)。
  2. 常见修复模式:为自定义目标补充 Inputs/Outputs;Copy 任务加 SkipUnchangedFiles="true";生成器先写临时文件再按内容决定是否覆盖;对 SDK 或 NuGet 包引入的易变中间文件上游用 Touch 稳定时间戳。
  3. 二进制日志分析:dotnet build /bl、/bl:名称.binlog、/bl -restore 抓取完整流水线;-pp 输出预处理后的项目文件,用于定位属性来源与目标定义;日志含完整路径与环境变量,勿提交版本库或公开分享。
  4. 并行构建:dotnet build 默认 /m,可显式 /m:4、/m:1 排查;/graph 先分析依赖图再调度,适合 50+ 项目的大解决方案;MSBuild 任务可设 BuildInParallel="true"。并行可能暴露共享文件竞争、未声明的 ProjectReference、目录创建竞争等问题。
  5. 还原与缓存优化:dotnet restore --locked-mode、--use-lock-file、RestorePackagesWithLockFile;NuGet 全局包与 HTTP 缓存、obj/ 中间输出;CI 中缓存 ~/.nuget/packages 并用 locked-mode 还原。警告策略用 TreatWarningsAsErrors 与 NoWarn。

限制:版本假定为 .NET 8.0+ SDK;仅覆盖 SDK 样式项目;MSBuild 错误解读、MSBuild 编写与自定义任务开发、锁文件与集中包管理不在范围内。官方原文在“Agent Gotchas”后疑似截断,其余细节暂未提供。