我定期得到以下异常:
Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
我使用的是1.0.82.0.版本,在VS2010,OS Win7 64中使用nuget进行安装.
一旦异常开始出现,它就会不断出现 - 在VS内部或外部的调试和发布以及运行应用程序.
停止它的唯一方法是注销和登录.不抛出异常并加载dll.它可以工作几天,但它可以再次破坏.
有没有人见过这样的东西,有没有解决方案呢?
我能够在我的开发盒上构建并执行我的 Winforms 应用程序,但是当我尝试在另一个干净的盒(虚拟机)上运行我的应用程序时,我遇到了此错误。
Application: MyApp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.DllNotFoundException
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(System.Data.SQLite.SQLiteConfigOpsEnum)
at System.Data.SQLite.SQLite3.StaticIsInitialized()
at System.Data.SQLite.SQLiteLog.Initialize()
at System.Data.SQLite.SQLiteConnection..ctor(System.String, Boolean)
at System.Data.SQLite.SQLiteConnection..ctor()
at DittoSql.SQL..ctor()
at MyApp.Program..cctor()
Exception Info: System.TypeInitializationException
at MyApp.Program.Main(System.String[])
Run Code Online (Sandbox Code Playgroud)
我使用 Nuget 将 SQLite 添加到我的项目中。
遗憾的是,事件查看器日志没有提供系统找不到的 DLL。我做了研究,发现的一件事是 .Net 兼容性。我当时使用的是 4.6.2,在 SQLite v1.08 上不支持该版本,因此我降级到 .Net 4.6(已列出)。
两台机器都运行 Windows 10 X64 以及所有最新更新。
这是显示文件的应用程序文件夹的屏幕截图。
更新
根据 @Plutonix 的评论,这里是一个屏幕截图,显示了对我的项目的引用。缺少System.Data.SQLite.Core,其中包含互操作文件。每个.Net版本和操作系统类型都有不同的版本,所以我不能只浏览packages文件夹内的文件夹,除此之外,这是一个可怕的黑客行为。应该有一种干净的方法来添加引用。
作为记录,我简要地想到了该文件,但我没有看到它或核心,并认为 1.08 版本没有使用它,但我猜它确实如此。
注意:我SQLite.Interop.dll手动将文件复制到虚拟机并加载项目。Procman没有那么有帮助,也许信息太多,尽管我过滤掉了除我的应用程序之外的所有内容。无论如何,问题是如何获得 SQLite 核心的引用。
更新2
从 …
图书馆似乎经常出现问题SQLite.Interop.dll。只需看看这些其他 StackOverflow 问题即可:
我\xe2\x80\x99已经完成了以上所有内容以及更多内容:
\nSystem.Data.SQLite.CoreNuGet 包,*.csproj元素,x64而Any CPU不是没有成功。关键要素是应用程序在本地运行得很好,但我需要让它在Docker上运行,而问题就出现在 \xe2\x80\x99s 上。情况是我\xe2\x80\x99m 使用Visual Studio 2022处理.NET Core 3.1控制台应用程序。该应用程序最终将部署在AKS(Azure Kubernetes Service)上。当然,首先我需要让它在我的开发机器上本地安装的 Docker 上运行。在 Visual Studio 上构建控制台应用程序项目没有给我带来任何错误,并且它在 Visual Studio 中运行良好。使用适当的 Dockerfile构建其 …