MEF插件找不到引用库
本文关键字:引用 找不到 插件 MEF | 更新日期: 2023-09-27 17:50:00
我正在用MEF实现一个插件系统,到目前为止它工作得很好。我最近遇到了一个问题:主应用程序使用SQLite数据库,现在我有一个插件,必须访问该数据库以及。当我复制插件到我的插件目录mef捡起它正确,但一旦它试图访问任何与SQlite我得到一个系统。IO异常告诉我它找不到它所依赖的sqlite dll。
我试着复制sqlite dll到插件目录,但它仍然不会工作。我在主应用程序中引用的任何库不应该也在我的插件中可用吗?即使没有,如果库在同一个目录下,插件不应该找到它们吗?
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;