我有三个项目,v.i.z。 Shell.Core
,Shell
和Services.Employees
。 Shell
从Services.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
的依赖项加载吗?有没有其他方法来解决这个棘手的小问题?
答案 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进口,再次运作良好。