点网组件可能会发生什么样的破坏性变化

时间:2013-06-07 11:52:56

标签: .net-assembly

我正在学习.NET程序集版本号。在寻找何时更改汇编版本号时,我遇到了突破性变更一词。我认为“突破性变革”是一个广阔的领域,我知道几乎没有可能突破变革:

  • 界面已更改
  • 外露方法已更改

请帮助我找出可被视为重大改变的任何其他可能性。

1 个答案:

答案 0 :(得分:2)

我不知道是否可以提供详尽的列表,但每当您更改可见类型或类型成员的语义或功能(如方法,构造函数,属性,事件等)时,这将是一个打破变革。

如果类型或成员是publicprotected(包括protected internal),并且所有包含类型(此程序元素的类和结构),则它们在程序集外“可见”坐在“里面”也是publicprotected

此外,如果您更改成员的“正式”外观,例如将字段更改为属性,或更改方法,属性,事件等的(返回)类型,或更改成员的签名方法,包括更改可选参数或其默认值。在某些情况下,向现有方法添加新的重载可能会发生重大变化,例如消费代码的调用可能会变得模糊不清。

以任何方式更改枚举的“字段”(命名常量),无论是重命名还是更改顺序,都是一个重大更改,例如更改const字段的值。

根据.NET and Compatibility: Breaking Changes in a Managed World (Kit George),微软曾经有一份文件“定义”这个术语。不知道它是否仍在那里,或者它是否有用。