在某些计算机上加载SQLite时出现BadImageFormatException

本文关键字:BadImageFormatException SQLite 加载 计算机 | 更新日期: 2023-09-27 17:53:49

我在。net 4.0中创建了一个非常简单的控制台应用程序,它将作为计划任务运行。它查找在一定时间内未被修改的本地文件,然后解析该文件,将一条记录插入MySQL数据库,并将该文件复制到网络。我使用本地SQLite数据库来跟踪哪些文件已经被处理,但不幸的是,我在第一次SQLite操作时遇到了一个问题:

System.BadImageFormatException: Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies.  is not a valid Win32 application. (Exception from HRESULT: 0x800700C1) File name: 'System.Data.SQLite.dll'
at FileDatabase.CreateDatabaseAndTable()
at Program.Main(String[] args)

此异常在一个系统(Windows 7 x64 Home Premium with。net 4.0 full)上抛出,但不会在其他两个系统(开发系统+另一个,都是Windows 7 x64 Professional with。net 4.0 full)上抛出。

从浏览其他问题,我看到这可能发生当程序在64位模式下运行,因为SQLite DLL是32位版本。我检查的第一件事是,在Visual Studio配置管理器中活动平台是x86。我还使用IL asm来验证输出的exe是否为32位(。corflags 0x00000003//ILONLY 32BITREQUIRED)。我更愿意将32位SQLite DLL和目标平台保持为x86,这样我就不必为32位和64位计算机制作不同版本的应用程序。

我也读到这个异常可能是由于DLL文件损坏而发生的,但由于它在某些计算机上工作,我认为情况并非如此。

我在问题系统上尝试过的其他没有帮助的事情:

  • 在GAC和Windows目录中搜索错误的SQLite dll,但是没有找到。
  • 关闭AVG杀毒软件。
  • 直接运行exe而不是发布的ClickOnce应用程序。
  • 卸载和重新安装ClickOnce应用程序

任何建议都将受到赞赏-谢谢!

在某些计算机上加载SQLite时出现BadImageFormatException

从system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki安装完整的安装包似乎已经解决了这个问题-它一定是一些不存在的依赖(可能在Windows 7专业版而不是家庭版?)虽然这个解决方案对于大型部署来说并不完美,但我确实只需要在这台计算机上使用它。感谢RoadBump让我找到了正确的道路。