未找到可执行文件中包含的合同程序集

时间:2012-08-29 15:40:24

标签: c# mef .net-assembly contract

我正在使用MEF来开发插件系统。基本插件与可执行文件合并(使用ilmerge)以获取一个可执行文件。这些插件使用AssemblyCatalog加载。但是也应该可以使用DirectoryCatalog添加插件。

我的类库项目引用合同库并使用MEF导出类。当可执行文件试图加载dll时,它声称它无法解析对合同库的依赖 - 它包含在exe中。如果我将Contract.dll复制到同一目录,它的工作原理。但是它还包含在exe中吗?

如何避免复制合同?

1 个答案:

答案 0 :(得分:0)

尝试使用此代码以确保您在主机中公开您的库

AssemblyCatalog assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
DirectoryCatalog directoryCatalog = new DirectoryCatalog(@"...");//Replace with your path

AggregateCatalog catalog =
    new AggregateCatalog(new ComposablePartCatalog[] { assemblyCatalog, directoryCatalog  }); 

CompositionContainer container = new CompositionContainer(catalog);