SuperAPI AI 工具集

dotnet-inspect-compatibility

通用与其它

查看项目

更新于 10-15 21:05

技能介绍

用途:判断某次变更或升级是否可安全采用,弄清两个版本之间改了什么,以及某个版本对外暴露哪些 API。该技能跨命令工作——diff 看变更,library/package 看单个版本的对外表面。

主要能力:

  • API 表面差异:diff 可对比包、平台(in-box)库或两个本地构建之间的版本区间。--breaking 用于迁移,--additive 用于发布说明,--changed 用于就地成员变更,--name-only 快速列出。用 -t TypeName 收窄,用 --all 放宽。
  • 行为差异:-S "Analysis Diff" 比较两个版本的方法体级信号增量,输出 Member | Signal | Old | New | Delta,信号涵盖分配、复制、反射、抛出、捕获、finally、unsafe、构造异常和优化形态,用于发现分配回归或异常覆盖变化。可用 --finding analysis.allocation、analysis.call-site、analysis.unsafety 确认单个方法边界上的引入。
  • 实现差异:--implementation 是 -S "Implementation Diff" 的快捷方式,输出反编译 C#、IL 与 PDB Source(经校验的源码)行。--pdb-source 可比较作者源码,即使 C# 与 IL 未变。
  • 功能开关:library 或 package 加 -S Switches,报告 FeatureSwitchDefinition、运行主机配置选项和 AppContext 开关。
  • 版本解析:package Foo --versions、--versions -n 1、Foo --version 1.2.3,--preview 含预览版,--include-unlisted 显示未列出版本,--versions-with-feed 保留版本/源配对。可用 @ 固定,如 Foo@9.0.0、Foo@latest。--at 接受精确版本、从 1 开始的 #N、first 或 last。

用法要点:命令形如 dnx dotnet-inspect -y -- <command>。普通 API diff 要求两端程序集名、区域性和公钥标记相同,程序集版本可不同。类型/成员的 --match 用于坐标对应问题,端点按调用者顺序,成员选择器仅在源侧解析。--envelope 可输出 Content、Share 和诊断,schema_version 为 1,result_kind 为 "library-api-diff"。

限制:未分类的类型或成员变更会显示为 Other API Changes,不应视为安全或破坏性;比较不完整或被拒绝会返回非零并报告 not compared,缺失泛型约束依赖保留检查失败证据,不能解读为"无 API 变更"。--match 不适用于 History、--at、行投影等;PDB Source 行是实现证据,不是语义等价证明。当前 type/member --match 报告 share.kind 为 nonProjectable。

适用场景:升级前评估、迁移范围界定、发布说明生成、分配与异常回归排查、unsafe 操作引入确认、功能开关审查、版本定位与二分探测。资料未提供收费、价格或更多平台信息。