我该如何处理这个与MEF相关的ReflectionTypeLoadException异常?

时间:2013-11-10 06:32:01

标签: c# .net mef composition

我有三个项目,v.i.z。 Shell.CoreShellServices.EmployeesShellServices.Employees导入部分,即后一个项目是外部的,在任何解决方案项目中都没有引用。与Shell一样,“Shell.Core”也是一个WPF应用程序,而不是类库。我开始将它作为DevExpress的项目类型包含所有正确的引用,因为它定义了某些共享的UI组件。

Services.Employees引用Core,它定义了它使用的某些基类。现在,当启动应用程序Shell,它应该加载Core,然后它执行MEF组合,从DirectoryCatalog加载Services.Employees部分,但MEF看到{{1}的依赖项虽然主机应用程序已经引用了这些Core依赖项,但是希望从该目录中加载它们。

例如,当我尝试合成时,我收到如下错误:

  

异常:'TypeLoadException':无法加载类型   来自程序集'XTime900.Shell.Core的'Shell.Core.MappedViewModel`1',   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。

我的出路是什么?我是否还应导入Core,尽管它已经在引用的项目中?我应该将Shell.Core.MappedViewModel转换为类库,因此它将作为DLL出现在目录目录中,MEF会将其作为Core的依赖项加载吗?有没有其他方法来解决这个棘手的小问题?

1 个答案:

答案 0 :(得分:0)

看起来这件事发生了。 Shell.Core.MappedViewModel1, referenced by the plugins, loaded the ViewModel types. Then, the MEF plugins referenced this project, and during composition, couldn't find the right objects. When I factored View Models out into a separate project, referenced by both Core`和MEF进口,再次运作良好。