我正在使用 MEF 开发插件系统。基本插件与可执行文件合并(使用ilmerge
)以获得一个可执行文件。这些插件是使用AssemblyCatalog
. 但是也应该可以使用DirectoryCatalog
.
我的类库项目引用合同库并使用 MEF 导出一个类。当可执行文件尝试加载 dll 时,它声称它无法解析对合同库的依赖关系 - 合同库包含在 exe 中。如果我将 Contract.dll 复制到同一目录,它就可以工作。但它无论如何都包含在exe中?
我怎样才能避免复制合同?
我正在使用 MEF 开发插件系统。基本插件与可执行文件合并(使用ilmerge
)以获得一个可执行文件。这些插件是使用AssemblyCatalog
. 但是也应该可以使用DirectoryCatalog
.
我的类库项目引用合同库并使用 MEF 导出一个类。当可执行文件尝试加载 dll 时,它声称它无法解析对合同库的依赖关系 - 合同库包含在 exe 中。如果我将 Contract.dll 复制到同一目录,它就可以工作。但它无论如何都包含在exe中?
我怎样才能避免复制合同?
尝试使用此代码以确保您在主机中公开您的库
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);