我有以下情况。
Data
。Data
。Data
作为输入。诀窍是,所有这些程序集都是插件并动态加载。当然,F1和F2都引用D,但在运行时,所有三个都由主机应用程序加载。
现在如果有人用新版本替换D二进制文件会有什么变化,这个版本有不同的界面?
我写了一个测试应用程序,它做了类似的事情,结果如下:
如果.NET跟踪接口调用,我很好。那是因为访问库中未更改的部分只会起作用,如果该部分发生变化,我只会告诉我一个例外。所以它将工作(在接口级别上)或不工作 - 没有未定义的行为。
我的问题:
答案 0 :(得分:0)
您的第二个问题:在Visual Studio中,有一种简单的方法可以强制您的应用程序使用特定版本的引用程序集。只需单击引用下的程序集,然后查看属性。有一个名为“特定版本”的属性。如果将其设置为true并在运行时加载另一个,则会出现异常。
你的第一个问题:我不确切知道.Net何时能够使用程序集确定它是否未编译。因此,如果类/接口的签名发生更改,.Net将抛出异常。 我认为 .Net只是尝试使用新程序集,如果新程序集中类/接口中的方法/属性具有修改后的签名,则会抛出异常。