首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试MEF异常?

如何调试MEF异常?
EN

Stack Overflow用户
提问于 2011-11-30 18:16:43
回答 2查看 6.5K关注 0票数 5

我们目前使用的是MEF (托管扩展框架,http://mef.codeplex.com/ ),它抛出了异常,但信息有限。

有没有办法调试MEF异常?

我的例外是这样的:

代码语言:javascript
复制
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)

   at System.Reflection.RuntimeModule.GetTypes()

   at System.Reflection.Assembly.GetTypes()

   at System.ComponentModel.Composition.Hosting.AssemblyCatalog.get_InnerCatalog()

   at System.ComponentModel.Composition.Hosting.AssemblyCatalog.GetExports(ImportDefinition definition)

   at System.ComponentModel.Composition.Hosting.AggregateCatalog.GetExports(ImportDefinition definition)

   at System.ComponentModel.Composition.Hosting.CatalogExportProvider.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)

   at System.ComponentModel.Composition.Hosting.AggregateExportProvider.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)

   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExports(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)

   at System.ComponentModel.Composition.Hosting.CompositionContainer.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)

   at System.ComponentModel.Composition.Hosting.ExportProvider.GetExports(ImportDefinition definition, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ImportEngine.TryGetExports(ExportProvider provider, ComposablePart part, ImportDefinition definition, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ImportEngine.TrySatisfyImportSubset(PartManager partManager, IEnumerable`1 imports, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ImportEngine.TryPreviewImportsStateMachine(PartManager partManager, ComposablePart part, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ImportEngine.PreviewImports(ComposablePart part, AtomicComposition atomicComposition)

   at System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.Compose(CompositionBatch batch)

   at System.ComponentModel.Composition.Hosting.CompositionContainer.Compose(CompositionBatch batch)

   at System.ComponentModel.Composition.AttributedModelServices.ComposeParts(CompositionContainer container, Object[] attributedParts)

   at MyApp.Extension..ctor(Assembly assembly) in W:\MyApp\Source\\Extensions\Extension.cs:line 45

代码很简单:

代码语言:javascript
复制
var aggregateCatalog = new AggregateCatalog();
_assembly = assembly;
var assemblyCatalog = new AssemblyCatalog(assembly);
aggregateCatalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()));
aggregateCatalog.Catalogs.Add(assemblyCatalog);
_compositionContainer = new CompositionContainer(aggregateCatalog);
_compositionContainer.ComposeParts(this);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 18:54:43

I feel your pain。当我被卡住时,我通常会转储MEF合成信息,以获得有关合成失败原因的更多信息。有关如何执行此操作的说明,请参阅MEF编程指南中的Diagnosing Composition Problems或MSDN上的Debugging MEF主题。

在Codeplex4.5(或目前在.NET上可用的MEF2预览版4版本)中,有一个更简单的选项:您可以通过在传递给容器构造函数的CompositionOptions中禁用静默拒绝来提高错误消息的有用性。

编辑:啊,你得到了一个ReflectionTypeLoadException。这是另一个问题:这意味着某些程序集中的类型无法成功加载,通常是因为它们引用了无法找到的其他类型。在您的代码示例中,您应该能够通过调用assembly.GetTypes()重现问题,而不涉及MEF。

票数 9
EN

Stack Overflow用户

发布于 2011-11-30 18:54:56

Daniel Plaisted写了一篇相当深入的关于诊断MEF问题的blog article

你能告诉我们抛出了什么异常吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8324302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档