繁体   English   中英

MEF成分导入问题

[英]MEF Composition Import Issue

我有一个MEF构成问题。 在开发环境中,我可以使用此代码导入零件。

var dirCatalog = new DirectoryCatalog(path, "MyCompany.*.dll");            
var container = new CompositionContainer(dirCatalog);
container.SatisfyImportsOnce(this);

但是,当我部署到无法正常工作的测试服务器时。 我发现使其正常工作的唯一方法是显式加载具有如下所示导出功能的dll:

var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.Services.AppServer.Modelling.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.AppServer.Dispatchers.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.Services.AppServer.Service.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.Common.InstrumentService.Proxy.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.Common.InstrumentPropertyService.Proxy.dll"))));

var container = new CompositionContainer(catalog);
container.SatisfyImportsOnce(this);

显然,我并不是真的要显式加载每个具有导出功能的dll。 那种失败了MEF的目的。 但是,现在这是我发现唯一可行的方法。

此代码位于自定义服务主机工厂中,用于启动IIS中托管的WCF服务。 不确定那很重要...

TIA,格雷格

为什么不将DLL文件名放在XML或其他配置文件中 至少您不必重新编译。

我建议至少有一个。

FilenameIsEnabled ,这样,您只需切换IsEnabled即可,而不必在XML文件中进行注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM