【问题标题】:MEF with extra DLLs带有额外 DLL 的 MEF
【发布时间】:2014-02-12 06:18:53
【问题描述】:

我创建了一个使用 MEF 加载扩展的 Outlook 插件。这些扩展都是作为 C# 类库创建的。当 Outlook 插件启动时,它会将所有插件 DLL 从网络目录复制到本地计算机,然后通过 MEF 加载它们。

对于其中之一,我使用的是 MySql.Data.dll 库。该 dll 被复制到我放置 MEF 加载的 DLL 的同一目录中,但那个目录不起作用。最终用户收到一个异常,说它找不到那个 MySql dll。

放置通过 MEF 导入包含的类库所需的额外 DLL 有什么技巧?

【问题讨论】:

  • 您使用什么样的目录?尝试添加一些示例代码和其他错误信息。
  • 我正在使用 AggregateCatalog(),并在文件夹中循环访问 DLL,将它们传递到 AssemblyCatalog()。错误只是“无法加载文件或程序集,'MySql.Data,版本.....'
  • 尝试使用 fuslogvw.exe 诊断程序集加载错误。它可能是缺少 MySql.Data 的依赖项。

标签: c# .net plugins mef


【解决方案1】:

我没有在项目中使用过 MEF,但我不得不在几个场合推出自己的插件架构。您可以尝试加入AppDomain.AssemblyResolve 事件。我不知道该示例在该页面上有多有用,但您可以检查事件 args 中的程序集名称并尝试从您加载插件的同一文件夹中加载该程序集。

【讨论】:

  • 谢谢,这解决了我的问题。我接受了给定的程序集,通过 Assembly.LoadFrom() 运行它,然后返回结果,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2017-01-31
  • 2018-06-25
  • 1970-01-01
相关资源
最近更新 更多