.NET:关于AssemblyVersion,什么定义了二进制兼容性?

cer*_*ero 7 .net c# clr gac

对命名强大的程序集进行哪些更改需要更改AssemblyVersionAttribute?显然,以可能需要客户端进行代码更改的方式更改公共API需要增加AssemblyVersion.但是,对于不需要在客户端中进行代码更改的公共API的更改呢?例如:

  • 添加公共类或接口?
  • 公共成员或接口添加公共成员?(编辑:drscroogemcduck正确地指出,在接口上添加一个成员会阻塞所有实现者.傻我.)
  • 增加班级成员的知名度?

必须在MSDN上的某个地方有明确的文档(或者,在某些MSSE的个人博客上了解MS).但我根本找不到它.请帮忙!

Ern*_*ieL 5

回应Martijn的赏金:

关于二进制兼容性的最佳参考是在社区Wiki上.

.NET中API破坏性更改的明确指南


Luc*_*ero 4

这很简单......只要类型保持不变(在其公共或受保护的布局中)并且方法签名没有更改(添加方法或类型就可以了),JIT 应该能够很好地链接 DLL。

也就是说,我认为即使它确实有效,你也不应该这样做。创建一个新版本,并根据需要使用策略将旧版本映射到新版本。否则你会把自己直接带回 DLL 地狱......我很确定你不希望这样。