【发布时间】:2011-06-13 14:32:32
【问题描述】:
假设我们在程序集 A.dll 的版本 1 中有 class X:
class X {
SomeType Property { set; get; }
}
然后在程序集的第 2 版中 A.dll:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get; }
}
现在假设我们有第二个程序集 B.dll 加载 A.dll 并使用 X。添加属性 OtherProperty 会破坏 ABI 吗? B.dll 会不会无法使用A.dll/X?如果不是,声明的顺序会有什么不同吗?如果属性是虚拟的,有什么不同吗?
我想我真的在问:一般的 ABI 规则是什么?我知道在发布后更改接口是一件坏事,但我真的希望能够在某些情况下添加属性,而无需添加子类。
【问题讨论】:
-
请参阅:.NET 中 API 重大更改的明确指南 stackoverflow.com/questions/1456785/…
-
你是如何加载 DLL 的?
-
@Mark:我有第三方客户端引用我的一些程序集。我有几个类,我想用一些属性进行扩展。我想这样做而不需要第三方重新编译他们的程序集。我可以很好地问他们,但我不愿意。它只是增加了更多的周转时间......
标签: c# .net binary-compatibility abi