1

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

我的类库项目引用合同库并使用 MEF 导出一个类。当可执行文件尝试加载 dll 时,它声称它无法解析对合同库的依赖关系 - 合同库包含在 exe 中。如果我将 Contract.dll 复制到同一目录,它就可以工作。但它无论如何都包含在exe中?

我怎样才能避免复制合同?

4

1 回答 1

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);
于 2012-08-29T17:57:04.757 回答