尝试在C#中访问Sqlite数据库

时间:2019-01-24 07:39:13

标签: c# sqlite

错误消息:

  

无法加载文件或程序集'System.Data.SQLite,版本= 1.0.109.0,区域性=中性,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式错误的程序。

我确实对此错误进行了很多搜索,并找到了解决该问题的方法,但没有一个能帮助我解决错误。

当我编写代码以64位兼容性连接到Sqlite数据库时,一切进行得很好 但我无法解决使用 NuGet 软件包使用的32位兼容性错误:

using system.data.SQlite

我还无法执行大型代码,我只计算Sqlite数据库中表中的记录。

任何帮助将不胜感激!

PS:很抱歉在同一问题上创建新话题(如果我确实这样做的话)。

1 个答案:

答案 0 :(得分:0)

  

如果将C#应用程序构建到x86程序集中,则可以在x64 Windows计算机上运行它。我们会有问题。在客户/目标64位计算机上,由于启动该过程的可执行文件完全由托管代码组成,因此它将与计算机的本机处理器体系结构一起运行,该体系结构在x64计算机上为x64。稍后,这将导致包含为x86编译的任何本机代码的程序集(例如System.Data.SQLite.dll混合模式程序集,SQLite.Interop.dll本机互操作程序集或sqlite3.dll本机库)都无法加载,通常会导致引发 BadImageFormatException

您的项目文件夹结构:

<bin>\App.exe (required, managed-only application executable assembly)
<bin>\App.dll (optional, managed-only application library assembly)
<bin>\System.Data.SQLite.dll (required, managed-only core assembly)
<bin>\x86\SQLite.Interop.dll (required, x86 native interop assembly)
<bin>\x64\SQLite.Interop.dll (required, x64 native interop assembly)

编辑:

注意::您将在正在工作的.NET目标的二进制zip文件中找到Interop DLL。

有用的参考文献:

1)SQLite configuration for C# application targeting any CPU

2)SQLite dll for x86/x64 architectures

3)Using SQLite With C#

4)Options for using System.Data.SQLite in a 32bit and 64bit C# world