我正在使用MEF来开发插件系统。基本插件与可执行文件合并(使用ilmerge
)以获取一个可执行文件。这些插件使用AssemblyCatalog
加载。但是也应该可以使用DirectoryCatalog
添加插件。
我的类库项目引用合同库并使用MEF导出类。当可执行文件试图加载dll时,它声称它无法解析对合同库的依赖 - 它包含在exe中。如果我将Contract.dll复制到同一目录,它的工作原理。但是它还包含在exe中吗?
如何避免复制合同?
答案 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);