MEF依赖问题

时间:2012-08-30 10:40:12

标签: mef

简单的例子。

应用程序A有一个类库C,它在整个过程中使用。

应用程序A使用MEF从插件目录中发现并加载插件模块P1和P2。每个插件一个组件。

P1和P2都依赖于C(类库)。

构建过程将确保P1使用的C版本与A引用的版本相同。

我假设我最终不会同时加载同一个程序集的多个副本?默认情况下,我最终在Plugin目录中找到了C的副本以及A的应用程序目录

1 个答案:

答案 0 :(得分:1)

为了确保您不会以重复的程序集结束,您可以将插件项目中的Copy Local属性更改为合同(C)库的false,这样在构建时,它将不会被复制到输出目录。

我认为你应该没问题,因为由于Fusion加载程序规则,CLR不会加载相同的程序集 - 第一个是查看目标程序集是否已加载到AppDomain中。但是,你必须要小心,因为任何使用Assembly.LoadFrom的代码如果实际发现程序集在磁盘上有不同的位置,可能会导致异常。