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