用途:在撰写发布说明前,验证 API diff 中声称的公共 API 确实出现在目标 .NET 构建中,且每个新 API 都能对应到真实 PR。它建立在只负责生成 diff 报告的 api-diff 技能之上,属于验证层。
主要能力:发现 diff 中存在但构建中缺失的 API(漏掉的回滚、重命名或仍为 internal);发现没有实现 PR 的新 API(可疑或归属错误);检测被后续回滚的 API。
输入:里程碑的 API diff 报告(api-diff/)或目标发布标识;build-metadata.json,其中含 nuget.source(dnceng dotnet<major> feed)和精确构建的 ref-pack 包版本;里程碑的 changes.json / 候选 PR 用于交叉引用。
dotnet-inspect 在此作为工具而非独立技能使用,它反射构建 feed 中的真实 ref pack,权威回答“该 API 是否存在于该构建中”。
使用方式:先读取 build-metadata.json,用其 nuget.source 作为 $FEED,ref-pack 版本(如 Microsoft.NETCore.App.Ref@<version>)作为 $VER,不要使用本机安装的 SDK。用 dotnet-inspect 验证 API 是否存在,例如:dnx dotnet-inspect -y -- find "AnyNewLine" --package "Microsoft.NETCore.App.Ref@${VER}" --source "$FEED";枚举类型成员确认签名:dnx dotnet-inspect -y -- member RegexOptions --package "Microsoft.NETCore.App.Ref@${VER}" --source "$FEED" -k field;对比两个构建的公共 API:dnx dotnet-inspect -y -- diff --package "Microsoft.NETCore.App.Ref@${PREV}..${VER}" --source "$FEED"。随后将新 API 与候选 PR 交叉引用,可用 gh search prs --repo dotnet/<repo> --merged "<distinctive API name>" --json number,title,mergedAt,url;若找不到实现 PR 且 dotnet-inspect 无法确认,则不要记录该 API。检测漏掉的回滚可用 gh search prs --repo dotnet/<repo> --state merged ""This reverts" <pr-number>" --json number,title,url。
报告:对每个检查的 API 给出简洁结论——present(含 PR)、missing(重命名/internal/回滚,应排除)或 unverified(描述但不点名类型)。报告范围限于已记录/已公布的表面,不暴露未记录的差异。
限制:需要目标构建的 build-metadata.json 与 ref-pack 版本;依赖 dotnet-inspect 与 gh 工具;不负责生成 diff 本身;资料未提供具体收费、平台或效果信息。