MEF插件找不到引用库

本文关键字:引用 找不到 插件 MEF | 更新日期: 2023-09-27 17:50:00

我正在用MEF实现一个插件系统,到目前为止它工作得很好。我最近遇到了一个问题:主应用程序使用SQLite数据库,现在我有一个插件,必须访问该数据库以及。当我复制插件到我的插件目录mef捡起它正确,但一旦它试图访问任何与SQlite我得到一个系统。IO异常告诉我它找不到它所依赖的sqlite dll。

我试着复制sqlite dll到插件目录,但它仍然不会工作。我在主应用程序中引用的任何库不应该也在我的插件中可用吗?即使没有,如果库在同一个目录下,插件不应该找到它们吗?

MEF插件找不到引用库

SQLite程序集应该在您的路径中,或者在您的应用程序目录中,而不是在您的模块目录中。如果是这种情况,并且您仍然得到相同的错误,那么它听起来就像我在这里发布的完全相同的问题,具有以下解决方案:

public static class AssemblyResolverFix
{
  //Looks up the assembly in the set of currently loaded assemblies,
  //and returns it if the name matches. Else returns null.
  public static Assembly HandleAssemblyResolve( object sender, ResolveEventArgs args )
  {
    foreach( var ass in AppDomain.CurrentDomain.GetAssemblies() )
      if( ass.FullName == args.Name )
        return ass;
    return null;
  }
}
//in main
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolverFix.HandleAssemblyResolve;