如何在运行时选择特定版本的DLL

时间:2015-05-05 05:30:43

标签: c# .net dll

这是对上一个问题Is it possible to switch DLLs at runtime so as to use a different version?的跟进。

自发布该问题以来,我重组了我的项目,但仍然存在DLL加载问题。

我有3个主要项目:应用程序,包含MEF插件的库和包含更多MEF插件的第二个库。每个插件都处理一种IO设备。

其中一个设备的制造商生产了一组新的同名但不兼容的DLL。我现在有2个插件来处理每个版本并将它们放在2个独立的项目中(MEF Lib1和MEF Lib2)。

MEF加载程序决定加载哪个冲突插件(只需要一个),并告诉插件初始化自己。然后它复制它的'在访问DLL之前,DLL(托管和非托管)到执行文件夹。

这不能按预期工作。 托管 DLL是正确的,但实际加载的非托管 DLL是旧版本。

我尝试过使用AppDomain.AssemblyResolve事件,但只有在无法找到DLL时才会激活此事件。在我的情况下,总是找到DLL - 而不是我想要的那个。

我做错了什么?

0 个答案:

没有答案