SuperAPI AI 工具集

dotnet-library-api-compat

编程与开发

查看项目

更新于 10-16 01:14

技能介绍

用途:帮助 .NET 库作者判断 API 变更对消费者的影响,区分二进制兼容(已编译程序集运行时是否仍可用)与源码兼容(消费者代码是否仍能编译),并据此决定版本号。基线为 .NET 8.0+,规则适用于各 .NET 版本,示例面向现代 SDK 风格项目。

主要能力:列出二进制安全变更(新增公共类型、非密封类新增方法、新增不同参数数量的重载、新增可选参数、放宽访问修饰符、带默认实现的接口成员、移除 sealed、新增枚举成员)与二进制破坏变更(删除类型/方法、改返回类型或参数类型、改字段类型、重排结构体字段、新增抽象成员、新增无默认实现的接口成员、虚方法改非虚、密封类、改命名空间等),并对应 TypeLoadException、MissingMethodException 等运行时异常。源码兼容部分覆盖重载歧义(CS0121)、扩展方法冲突、可选参数默认值变更、参数改名、类与结构体互换、命名空间冲突等。

类型转发器:移动公共类型到新程序集时,在原程序集用 [assembly: TypeForwardedTo(typeof(...))] 转发,原程序集需引用目标程序集;目标程序集可选加 [TypeForwardedFrom],对序列化类型尤其重要。转发链建议保持一跳。

SemVer 映射:删除成员、改签名、新增抽象成员、无默认实现接口成员、密封类、改结构体布局、无转发器改命名空间为 Major;标记 [Obsolete]、新增类型/重载/可选参数/DIM、带转发器改命名空间、放宽访问为 Minor;无 API 变化的修复、文档、性能优化为 Patch。弃用流程为 Minor 加警告、Minor 改为 error: true、Major 删除。

验证:在 csproj 设置 EnablePackageValidation 与 PackageValidationBaselineVersion,构建会报 CP0002、CP0006 等;可用 dotnet pack /p:GenerateCompatibilitySuppressionFile=true 生成 CompatibilitySuppressions.xml,并通过 ItemGroup 的 ApiCompatSuppressionFile 指定。

限制:不涉及 HTTP API 版本控制、NuGet 元数据与发布、多 TFM 打包机制、PublicApiAnalyzers 与 Roslyn 分析器配置,这些由其他技能覆盖。资料未提供具体收费、平台或效果信息。