C# 找不到可执行文件中包含的协定程序集

C# 找不到可执行文件中包含的协定程序集,c#,mef,.net-assembly,contract,C#,Mef,.net Assembly,Contract,我正在使用MEF开发一个插件系统。使用ilmerge将基本插件与可执行文件合并,以获得单个可执行文件。这些插件是使用AssemblyCatalog加载的。但也可以使用DirectoryCatalog添加插件 我的类库项目引用合同库并使用MEF导出一个类。当可执行文件试图加载dll时,它声称无法解析对契约库的依赖关系,契约库包含在可执行文件中。如果我将Contract.dll复制到同一个目录,它就会工作。但它是否包含在exe中 如何避免复制合同?尝试使用此代码以确保在主机中公开库 Assembly

我正在使用MEF开发一个插件系统。使用ilmerge将基本插件与可执行文件合并,以获得单个可执行文件。这些插件是使用AssemblyCatalog加载的。但也可以使用DirectoryCatalog添加插件

我的类库项目引用合同库并使用MEF导出一个类。当可执行文件试图加载dll时,它声称无法解析对契约库的依赖关系,契约库包含在可执行文件中。如果我将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);

你在System.ComponentModel.Composition.dll上添加了引用了吗?你能用agregator+consummer发布你的代码吗?这正是我正在做的。