更改界面时无法加载类型

时间:2017-02-19 14:37:08

标签: c# sdk backwards-compatibility

我正在开发具有抽象类示例的SDK。 在新的SDK版本中,我拆分抽象类,因此部分参数将在Example_BaseClass上。所以“Example”继承自“Example_BaseClass”。 使用Example类的程序员不应该对此更改产生影响。

如果我使用新的SDK编译我的代码(我的系统上的插件类型)并将其放在旧的软件版本(使用旧的SDK)上,它会引发异常: '无法从程序集'

加载类型'Example_BaseClass'

它喜欢搜索新类,尽管它应该是透明的。 甚至可以保持这种向后兼容性吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在新版SDK中,Example取决于 Example_BaseClass。因此,当您使用新SDK编译插件时,编译后的代码如下所示:

  • 主要代码取决于Example(访问某些方法或从中继承)
  • Example取决于Example_BaseClass。它试图找到它并因运行时异常而失败。

至于如何保持向后兼容性。 C#编译为中间层而不是二进制代码(汇编)。这让C#具有某些好处,比如反射。但它是成本(如你所见)。除非CoreRT repo的人给我们一种方法来将代码原生地编译成二进制文件,否则我看到的唯一方法就是将SDK作为nuget包发布,经常更新,并经常让人dotnet restore