gpt4 book ai didi

c# - MEF 插件找不到引用的库

转载 作者:行者123 更新时间:2023-11-30 12:31:14 24 4
gpt4 key购买 nike

我正在使用 MEF 实现一个插件系统,到目前为止它运行良好。不过我最近遇到了一个问题:主应用程序使用 SQLite 数据库,现在我有一个插件也必须访问该数据库。当我将插件复制到我的插件目录时,mef 正确地选择了它,但是一旦它尝试使用 SQlite 访问任何内容,我就会收到 System.IO 异常,告诉我它找不到它所依赖的 sqlite dll。

我也尝试将 sqlite dll 复制到插件目录,但仍然无法正常工作。我在主应用程序中引用的任何库不应该在我的插件中也可用吗?即使没有,如果库位于同一目录中,插件不应该找到它们吗?

如有任何帮助,我们将不胜感激。

最佳答案

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

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;

关于c# - MEF 插件找不到引用的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com