c# - 尝试在 C# 中访问 Sqlite 数据库
问题描述
错误信息:
无法加载文件或程序集 'System.Data.SQLite, Version=1.0.109.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' 或其依赖项之一。试图加载格式不正确的程序。
我确实对这个错误进行了很多搜索,并得到了一些解决这个问题的方法,但没有一个能帮助我解决这个错误。
当我编写代码以连接到具有 64 位兼容性的 Sqlite 数据库时,一切顺利,但我无法解决使用NuGet包使用的 32 位兼容性的错误:
using system.data.SQlite
我还无法编写大型代码,我只是计算 Sqlite 数据库中表中存在的记录。
任何帮助将不胜感激!
PS:很抱歉在同一个问题上创建了一个新线程(如果我真的这样做了)。
解决方案
如果我们将 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 文件中找到互操作 DLL。
有用的参考资料:
推荐阅读
- angularjs - 无法读取 AngularJS 拦截器中的响应数据和标头
- java - 如何从 json 文件中设置发布请求有效负载再保证
- oracle - oracle表单12c中的Json_table函数
- javascript - 如何将谷歌表格数据转换为json
- php - 如何使当前用户成为帖子作者?
- android - 仅在 EditText 中隐藏数字以获取 pin 码 (Android)
- python - Python - 具有多个条件的过滤函数
- laravel - Livewire 内部组件中的属性不会刷新
- xaml - 如何在框架内使用网格分隔条目和图像?
- selenium - 带有 Selenium 的 Jmeter 按顺序而不是并行运行场景