SuperAPI AI 工具集

build-parallelism

通用与其它

查看项目

更新于 10-16 00:32

技能介绍

用途:指导优化 MSBuild 构建并行度与多项目调度,解决构建未用满 CPU 核心、多项目解决方案构建慢的问题。

主要能力:讲解 MSBuild 并行模型(/maxcpucount 或 -m 指定工作节点数,默认 1 个节点即串行,建议用 -m 不加数字以使用全部逻辑处理器,每个节点一次构建一个项目,按依赖图调度);项目依赖图与关键路径分析(拓扑排序,最长依赖链决定最短构建时间,宽图并行好、深图差);图构建模式(dotnet build /graph 或 msbuild /graph,构建前先构造完整依赖图,改善调度、避免重复求值,但要求所有项目使用 ProjectReference,不适用于构建时动态发现引用的项目);优化项目引用(减少不必要的 ProjectReference,使用 SkipGetTargetFrameworkProperties="true"、ReferenceOutputAssembly="false",考虑改用 PackageReference,用 .slnf 解决方案筛选器构建子集);自定义目标中的 BuildInParallel(<MSBuild Projects="@(ProjectsToBuild)" BuildInParallel="true" />,需 /maxcpucount > 1);多线程 MSBuild 任务(实现 IMultiThreadableTask 并用 [MSBuildMultiThreadableTask] 声明线程安全)。

诊断方式:优先用 binlog MCP(Microsoft.AITools.BinlogMcp),通过 expensive_projects、expensive_targets、project_target_times 工具定位慢项目与瓶颈目标;不可用时回放文本日志:dotnet msbuild build.binlog -noconlog -fl -flp:v=diag;logfile=full.log;performancesummary,查看 Project Performance Summary,并用 grep 'Target Performance Summary' -A 30 full.log 找瓶颈目标。理想情况构建时间远小于各项目时间之和;若接近则说明串行依赖过多或存在阻塞项目。

适用场景:大型多项目解决方案、CI 构建。CI 中建议使用 -m,可拆分构建阶段,配合 NuGet 锁文件与确定性构建做缓存。

限制:/graph 要求全部使用 ProjectReference;动态发现引用的项目不适用;BuildInParallel 需多节点才生效。具体版本与平台支持资料未提供。