如何调试MEF异常?

2023-11-29

我们目前正在使用 MEF(托管扩展性框架,http://mef.codeplex.com/)并且它会抛出异常,而可供继续处理的信息有限。

有没有办法调试 MEF 异常?

我的例外是这样的:

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

代码很简单:

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);

I 感受你的痛苦。当我陷入困境时,我通常会转储 MEF 组合信息以获取有关组合失败原因的更多信息。有关如何执行此操作的说明,请参阅诊断构图问题在 MEF 编程指南或调试MEFMSDN 上的主题。

在 .NET 4.5(或 codeplex 上当前可用的 MEF 2 预览版 4 版本)中,有一个更简单的选项:您可以通过在构图选项您将其传递给容器构造函数。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调试MEF异常? 的相关文章

  • 将 NLog 与 MEF 结合使用的最佳方式是什么?

    我想知道将 NLog 与托管可扩展性框架 MEF 结合使用的最佳方法是什么 我有一个支持使用 MEF 架构的插件的应用程序 导入和导出等 我想向我的应用程序添加日志记录功能 作为一个日志组件 我想使用 NLog 你会推荐什么 1 为 NLo
  • 如何使用 Ninject 实例化 MEF 导出对象?

    我的应用程序正在使用 MEF 从外部程序集中导出一些类 这些类是为构造函数注入而设置的 我面临的问题是 当我尝试访问这些类时 MEF 正在尝试实例化这些类 有没有办法让 Ninject 负责类的实例化 IEnumerable
  • 具有多个构造函数的 MEF 构造函数参数

    我开始使用 MEF 并且我有一个具有多个构造函数的类 如下所示 Export typeof ifoo class foo ifoo void foo ImportingConstructor void foo object par1 我在用
  • Visual Studio 包构建和私有 bin 路径中的 DLL

    我正在使用 MEF 来做一种粗略的插件架构 这运作良好 但是 当我使用 Visual Studio 包 发布构建任务 我通过 NAnt MSbuild 调用 进行部署时 我未引用的插件程序集未包含在包中 因此未部署 有没有办法告诉 VS M
  • 将 MEF 与 C# 结合使用,如何从插件调用主机上的方法?

    我正在尝试使用以下命令向我的 C 应用程序添加插件扩展性托管可扩展性框架 MEF 框架 到目前为止一切顺利 我的主 主机应用程序从定义的文件夹加载插件 并且可以从主应用程序调用它们的方法等 主机应用程序和插件都引用一个单独的 dll 程序集
  • MEF 与任何 IoC

    查看 Microsoft 的托管扩展性框架 MEF 和各种 IoC 容器 例如 Unity 我无法看出何时使用一种解决方案而不是另一种解决方案 更具体地说 MEF 似乎可以处理大多数 IoC 类型模式 并且不需要像 Unity 这样的 Io
  • 使用 Mvvm-light(oobe)+MEF 进行 Silverlight 导航?

    在用户控件 页面之间导航的最佳方法是什么 浏览器体验之外 我对 Silverlight 相当陌生 甚至对 mvvm 模式也比较陌生 导航框架与 MVVM Light Toolkit 的集成程度如何 两者的一般应用程序流程控制的片段会很棒 该
  • C#/MEF 无法使用没有无参数构造函数的基类

    我有一个 Prim 类 它实现 MEF 的 IPrimitiveDecomposer 接口并继承 Node 基类 public class Node public Node public interface IPrimitiveDecomp
  • 将实例添加到 MEF 容器

    如何将已创建的实例添加到 MEF 容器 目录中以在解析导入时使用 我想要 Unity 提供的功能RegisterInstance其容器上的方法 您可以使用撰写导出值 http msdn microsoft com en us library
  • PRISM + MEF -- 导入和导入Many

    FooService cs public interface IFooService int Foo Export Foo1 typeof IFooService public class Foo1 IFooService public i
  • 使用 MEF 导入 WPF DataTemplate?

    我一直将 MEF 视为一种可扩展性框架 除了一点之外 我几乎被说服了 假设我想导入 ViewModel 和 View 来显示它 我认为 正确 的方法是让 MEF 部分导出 ViewModel 类和显示 ViewModel 的 DataTem
  • 添加对 MEF 插件项目的引用时,为什么会出现警告图标?

    我希望通过直接引用插件项目并实例化插件类来测试插件的核心类 当我创建测试控制台应用程序项目并将项目引用添加到插件项目时 我在引用列表中的引用旁边看到一个警告图标 带有感叹号的黄色三角形 当我添加对 dll 插件的程序集构建输出 的引用时 我
  • 具有 MVC 4 或 5 的 MEF - 可插拔架构 (2014)

    我正在尝试使用 Orchard CMS 等可插入架构构建 MVC4 MVC5 应用程序 所以我有一个 MVC 应用程序 它将作为启动项目并负责身份验证 导航等 然后将有多个模块单独构建为 asp net 类库或剥离的 mvc 项目并具有控制
  • MEF ComposeParts。如何处理插件异常

    我在网上搜索了解决方案 但没有找到任何结果 在我的 C 应用程序中 我使用 MEF 来实现插件模式 一切正常 然而今天我试图弄清楚如果插件构造函数由于某种原因抛出异常会发生什么 加载我正在使用的插件CompositionContainer
  • 解耦视图、表示和 ASP.NET Web 窗体

    我有一个 ASP NET Web 窗体页面 演示者需要用控件填充该页面 这种交互对页面生命周期有些敏感 我想知道它是否有一个我不知道的技巧 我想对整个事情保持实际 但不妥协可测试性 目前我有这个 public interface ISome
  • mef 中的组合容器所持有的类的实例

    据我了解 MEF CompositionContainer 创建并保留类的实例 我不知道在什么情况下 CompositionContainer 的内部会有一个类实例 任何人都可以列出对 CompositionContainer 执行的操作或
  • MEF 依赖关系和版本控制

    我有一个使用 MEF 加载零件的系统 这些部分中的每一个都依赖于一个核心库 当我构建项目时 我将版本号添加到 dll 文件中 如下所示 第1部分 1 0 0 0 dll 第2部分 1 0 0 0 dll 此外 还有一个执行 MEF 合成的应
  • 托管扩展性框架 (MEF) 与复合 UI 应用程序块 (CAB)

    我们目前正在考虑在下一个应用程序中使用 CAB 或 MEF 我没有在 Codeplex 上看到任何有关如何处理同级控制通信的事件代理的示例 也许我错过了 MEF 中的控制间通信如何工作 此外 我们计划使用 Infragistics 它为 C
  • MEF 或 MEF2 是否已融入 .NET Framework 中?

    我正在尝试了解 MEF 并且看到对 MEF 和 MEF 2 的引用 This site http www palmmedia de blog 2011 8 30 ioc container benchmark performance com
  • MEF 错误,是循环依赖,现在是其他错误

    由于我的应用程序架构发生变化 我最近出现了循环依赖关系 该应用程序依赖于通过 MEF 加载插件的插件管理器 一切都工作正常 因为它看起来像这样 model cs Export Model public class Model public

随机推荐

  • 在 asp.net mvc 中显示数据库中的图像

    我有一个包含用户 ID 和图像列的视图 这是我尝试检索图像的方法 但我不断收到一个带有红色 x 的框 而不是实际图像 View td img src alt gt td 控制器 public FileContentResult Displa
  • 在 Linux 下从 Python 编辑 Windows 注册表

    我正在寻找一个Python API 或者我愿意绑定的C API 来在Linux系统中编辑从XP到7的Windows注册表 Windows 目标将是 Linux 下安装的卷 如果不存在 我愿意编写一个库 因此 注册表上的任何文档或内部结构也会
  • 在 Netbeans 中添加新的 Web 服务

    我正在尝试使用 netbeans 在 java 中构建 myspace 应用程序 其中 app 尝试更新我的帐户 好友更新以及所有此类内容 twitter 的 nebeans 网站上有一个类似的教程 但是当我尝试添加 API 地址时Mysp
  • 如何调试通过 UpdateListItems SOAP API 在 SharePoint 中创建列表项时出现的错误?

    我在调试 SharePoint SOAP 调用以创建列表项时遇到了非常困难的情况 我发送的 SOAP 主体是
  • Objective-C 错误“'XYZPerson' 没有可见的 @interface 声明选择器 'saySomething'

    我对 Objective C 确实很陌生 当我练习书本上的练习时 我真的被困在这里了 请帮助我解决这个问题 我已经思考了三个多小时可能导致此错误的原因 我还是没明白 此致 拉杰 提前致谢 main m import
  • Python 动态帮助和自动完成生成

    我想要的几乎都有了 这个动态对象封装了一个带有动态文档字符串生成的通用函数调用 def add docs tool def desc func func doc Showing help for s tool return func ret
  • 检测用户空闲(每个应用程序实例)

    我只需要在我的应用程序中进行用户空闲检测 每个 我的应用程序实例 我不能使用获取最后输入信息因为是特定于会话的用户输入 获取最后输入信息does not跨所有正在运行的会话提供系统范围的用户输入信息 相反 GetLastInputInfo
  • Convert Vuejs Typescript Options to Composition Api 中的奇怪问题

    问题已经解决 通读问题以了解如何逐步解决问题 我读到了有关组合 API 的内容 https vue composition api rfc netlify com api introduction 并尝试转换我现有的基于 vuejs 中 O
  • 当 Sphero 同步并且我使用多个 Activity 时如何保持蓝牙连接

    当我与 Sphero 同步并且想要从一个活动传递到另一个活动时 我的同步丢失了 我必须在新活动中执行 onCreate 中的此方法才能再次获得同步 RobotProvider provider RobotProvider getDefaul
  • 如何在 Java SE 环境上部署 JAX-RS 应用程序?

    我想使用 JAX RS 编写 RESTful Web 服务 并且想将其发布到本地主机上 例如http localhost port 我在这篇文章中读到了以下内容answer Java SE 7 JSR 336 和 Java SE 8 JSR
  • Python:检查异常引发的位置

    采取这个代码 def A try B except Exception pass def B C def C print exception handling pointer A 功能exception handling pointer应该
  • javascript确认函数确定和取消返回相同的结果

    在这里 我打电话confirm param1 param2 显示警报的方法Do you want to continue 在这种情况下 如果用户单击OK 它返回true 如果用户点击Cancel 它返回false 但是 当单击取消按钮时 它
  • Keras:使用 flow_from_directory 的 fit_generator 的多个输入

    fit generator 中是否可以有两个 flow from directory 例如 train generator 1 train datagen flow from directory train data dir 1 targe
  • 布尔运算符 ++ 和 --

    今天 在编写一些 Visual C 代码时 我遇到了一些令我惊讶的事情 看来 C 支持 bool 的 增量 但不支持 减量 这只是一个随机决定 还是背后有某种原因 这编译 static HMODULE hMod NULL static bo
  • Windows 批处理文件中的字符串处理:如何用前导零填充值?

    在 Windows cmd 批处理文件 bat 中 如何填充数值 以便将 0 99 范围内的给定值转换为 00 到 99 范围内的字符串 IE 我希望小于 10 的值有前导零 您可以使用一个两阶段的过程 REM initial setup
  • 日期时间到纪元的转换

    我有一个 bash 问题 使用 awk 时 我正在提取文本文件中第一列和第五列的每个实例 并使用以下代码将其通过管道传输到新文件 cut f4 test170201 rawtxt awk stream 0 print 1 5 gt test
  • bash 中的转义引号(嵌入式 awk)

    我有一个复杂的命令通过 ssh 传递到远程服务器 我正在尝试解压缩一个文件 然后在第二个 ssh 命令中更改其命名结构和扩展名 我的命令是 ssh root server1 gzip d tmp file out 20171119 gz e
  • 使用 PHP 通过 SSL 连接到 MySQL

    我正在编写第一个脚本 它将通过 SSL 连接到 MySQL 数据库 我已经阅读了大量有关该主题的文章 并且遇到了许多关于如何设置它的选项 有些适用于我的情况 有些则不适用 这是我的情况 MySQL 服务器与脚本位于同一台计算机上 我的 SS
  • d3.js 中的转换队列;逐个

    我尝试在 d3 js 中进行链式转换 为此 我在数组中定义了一组转换 并 尝试 创建一个函数来递归调用它们 each end function 在前一个完成时开始转换 但我还没有结果 行动清单 animations function con
  • 如何调试MEF异常?

    我们目前正在使用 MEF 托管扩展性框架 http mef codeplex com 并且它会抛出异常 而可供继续处理的信息有限 有没有办法调试 MEF 异常 我的例外是这样的 System Reflection ReflectionTyp