错误消息:
无法加载文件或程序集'System.Data.SQLite,版本= 1.0.109.0,区域性=中性,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式错误的程序。
我确实对此错误进行了很多搜索,并找到了解决该问题的方法,但没有一个能帮助我解决错误。
当我编写代码以64位兼容性连接到Sqlite数据库时,一切进行得很好 但我无法解决使用 NuGet 软件包使用的32位兼容性错误:
using system.data.SQlite
我还无法执行大型代码,我只计算Sqlite数据库中表中的记录。
任何帮助将不胜感激!
PS:很抱歉在同一问题上创建新话题(如果我确实这样做的话)。
答案 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
4)Options for using System.Data.SQLite in a 32bit and 64bit C# world