在某些计算机上,应用程序无法加载sqlite dll文件

时间:2009-10-25 19:13:01

标签: c# sqlite deployment system.data.sqlite

我编写了一个使用sqlite的应用程序,它在大多数系统上运行良好。它是用C#编写的,唯一的非框架程序集是sqlite,它包含在System.Data.SQLite.dll中。

我在所有机器上以相同的方式部署它(复制粘贴exe文件,数据库文件和System.Data.SQLite文件)。它适用于我所有的PC以及我尝试过的大多数PC。

但后来我得到报告说,对某些人来说,它会引发以下异常:

  

无法加载文件或程序集   'System.Data.SQLite,Version = 1.0.65.0,   文化=中性,   PublicKeyToken = db937bc2d44ff139'或   其中一个依赖项。一次尝试   是用来加载程序的   格式不正确。

现在我已确保dll文件与应用程序exe文件位于同一文件夹中。它是相同的dll,具有与上面的异常消息中所述相同的版本。

我真的对此感到困惑,所以我创建了一个新的虚拟机,在其上安装了Windows 7专业版,并且只是复制粘贴文件,并且事情有效。因此,如果它在一个新窗口上工作,我无法想象其他PC可能会丢失...

注意:项目抛出异常的其中两台机器也在运行Windows 7专业版。

我真的很感激这方面的任何帮助,因为我的想法很新鲜......

3 个答案:

答案 0 :(得分:12)

这是一种可能性:工作和非工作机器32位与64位之间的区别是什么?你是在构建“任何CPU”,你应该只为你的外部DLL的位数构建?

答案 1 :(得分:1)

抛出异常的计算机可能正在运行64位版本的Windows,并且您的程序正在使用AnyCPU配置。 System.Data.SQLite DLL是一个双面的野兽:托管部分和本机部分。可能是本机部分负责例外。

有关详细信息,请参阅this question

答案 2 :(得分:1)

您是否检查过目标系统是64位还是32位?

可能是您的某个依赖项需要32位版本的Windows。要解决此问题,您可以在C#项目的属性中指定平台目标:选择x86而不是任何CPU。