我编写了一个使用sqlite的应用程序,它在大多数系统上运行良好.它是用C#编写的,唯一的非框架程序集是sqlite,它包含在System.Data.sqlite.dll中.
我在所有机器上以相同的方式部署它(复制粘贴exe文件,数据库文件和System.Data.sqlite文件).它适用于我所有的PC以及我尝试过的大多数PC.
但后来我得到报告说,对某些人来说,它会抛出以下异常:
Could not load file or assembly
‘System.Data.sqlite,Version=1.0.65.0,
Culture=neutral,
PublicKeyToken=db937bc2d44ff139’ or
one of its dependencies. An attempt
was made to load a program with an
incorrect format.
现在我已确保dll文件与应用程序exe文件位于同一文件夹中.它是相同的dll,具有与上面的异常消息中所述相同的版本.
我真的对此感到困惑,所以我创建了一个新的虚拟机,在其上安装了Windows 7专业版,并且只是复制粘贴文件,并且事情有效.因此,如果它在一个新窗口上工作,我无法想象其他PC可能会丢失什么…
注意:项目抛出异常的其中两台机器也运行Windows 7 proffesional.
我真的很感激这方面的任何帮助,因为我是新鲜的想法……
解决方法
这是一种可能性:工作和非工作机器之间的区别是32位还是64位?您是否正在为“任何cpu”构建,当您应该构建外部DLL的位数时?