用途:在优化 .NET/MSBuild 构建之前先建立可重复的性能基线,避免凭猜测优化;配套技能包括构建性能诊断、增量构建、构建并行与评估性能。
主要能力:1) 建立三类基线场景——冷构建、热构建(增量)与无操作构建,要求固定 SDK、配置、机器与环境变量,每场景至少跑三次,报告中位数与范围,并为每次采样保存唯一命名的 binlog;2) 用 Artifacts Output(UseArtifactsOutput)统一产物布局,减少 bin/obj 冲突并便于缓存;3) 启用确定性构建(Deterministic),结合 ContinuousIntegrationBuild 提升可复现与可缓存性;4) 裁剪依赖图,去除冗余传递引用,使用 ReferenceOutputAssembly="false" 与 PrivateAssets="all",必要时用 DisableTransitiveProjectReferences;5) 静态图构建 /graph,适用于大型多项目解决方案;6) 并行调优,使用 -m 与 -m:N 调整 MaxCpuCount,缩短关键路径;7) 拆分还原与构建,如 dotnet restore 加 dotnet build --no-restore -m,并给出分析器证据采集方式(/p:ReportAnalyzer=true)。
使用方式:以 binlog 为一切调查起点,例如 dotnet build /bl:perf.binlog -m;冷构建采样前需还原源码状态、执行 dotnet clean 并清理确认可删除的输出目录;热构建采样前先做一次不计时的基线构建,再施加同一处小改动后计时;无操作构建采样前同样先做一次不计时的基线构建,随后不修改直接重建。分析器计时示例:dotnet build /bl:analyzers.binlog /p:ReportAnalyzer=true。
适用场景与限制:适合缓慢或存在构建性能顾虑的 .NET 解决方案;小项目(少于 5 个)使用 /graph 可能得不偿失。不要用统一时长或百分比阈值判定瓶颈,应对比受控样本与目标/任务计时。禁用分析器仅可作为归因实验,不得作为修复方案,CI 中应保留分析器强制。删除输出前需获得批准,不要清空共享缓存。