2012-08-30 80 views
0

简单示例。MEF依赖关系问题

应用程序A有一个通过使用的类库C.

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

P1和P2都对C(类库)有依赖关系。

构建过程将确保由P1用C的版本是相同的由A.

引用的版本我假设我不会立刻加载同一组件的多个副本结束?默认情况下,我最终得到了插件目录中的C副本以及A的应用程序目录。

回答

1

为确保您不会因为重复的程序集而导致您可以将Copy Local属性更改为插件项目中的契约(C)库的false,这种构建方式不会将其复制到输出目录。

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

+0

是的,我想我会有一点戏剧,并确保它不会做任何愚蠢的事情。我有点担心MEF可能会重载一些程序集加载事件,并......做些事情...... :)谢谢。 – Ian