用途:帮助诊断和优化 MSBuild 增量构建,解决后续构建比预期慢、“什么都没改却仍然重建”等问题,并解释目标为何被跳过或重新执行。
主要能力:说明增量机制——带 Inputs 与 Outputs 的目标会比较文件时间戳,若所有输出都比输入新则跳过;缺少这两个属性时目标每次都会运行。列出常见失效原因:自定义目标缺少 Inputs/Outputs、输出路径含时间戳或 GUID 等易变值、写入未登记的输出、未注册 FileWrites、通配符或属性变化、NuGet 包更新、VBCSCompiler 缓存失效。
使用方式:连续两次无改动构建并抓取 binlog: dotnet build /bl:first.binlog dotnet build /bl:second.binlog -fl "-flp:v=diag;logfile=second-full.log;performancesummary" 可用 binlog MCP(Microsoft.AITools.BinlogMcp)加载分析,或回退到诊断日志,搜索“Building target completely”“Building target incrementally”“Skipping target”“is newer than output”。也可用 dotnet build /clp:PerformanceSummary 与 dotnet msbuild /pp:preprocess.xml 查看耗时与展开后的项目。
适用场景:排查自定义目标、生成代码、批处理项映射、Visual Studio 与命令行行为不一致(FUTDC)等情况。
限制:诊断请求默认不修改项目,除非用户要求修复;无法运行检查时须标注为未验证,不得声称已修复或验证。资料未提供具体版本、平台或收费信息。