SQL Server CE BadImageFormat

时间:2012-07-23 15:56:40

标签: c# deployment sql-server-ce badimageformatexception

我已经搜索了几周的解决方案,到目前为止还没有发现任何问题。我正在使用本地数据库来存储ZipCode& AreaCode信息。这样可以正常工作,正确加载,从数据库读取并在每台计算机上显示结果 除了 开发机器。我已将它部署到多台其他计算机上,一切正常,但在开发计算机上,当我尝试从数据库中读取时,它会返回BadImageFormat异常。

我已经浏览了桌面(开发机器)和我妻子的笔记本电脑上的“添加/删除程序”屏幕(它可以正常工作)。就SQL,SQL Server CE,ADO.Net,Visual Studio等而言,两个安装程序列表都是相同的。我有.exe文件中包含的dll文件,因此它们使用相同的版本。

有一次,这确实在开发机器上运行,然后我认为我卸载了一些东西而且它破坏了它。从那以后,我安装了Windows 7的全新副本和VS的新副本(硬盘升级的b / c,不是因为这个问题)。它仍然无效。该数据库采用SQL Server CE 3.5格式。

我几乎可以保证它不会成为连接字符串问题,因为它不会在机器之间发生变化。老实说,我甚至都不会担心它,除了我需要添加/调整数据库,我偏执地改变其中任何东西都会在其他机器上破坏它,这是不可接受的。

有人能想到我可能遗失的任何事情吗?

更新

在其中一个具有讽刺意味的伟大时刻,在发布这个问题之后我突然想到了。我可以把手指放在两者之间的一个区别是,在Dev机器上我只是从VS或Projects \ Bin文件夹运行它。在其他人上,我将exe和dll复制到CD中的文件夹中。考虑到这一点,我在Dev计算机的桌面上创建了一个文件夹,复制方式和我在其他机器上测试的方式一样,一切正常。所以我假设这是一个文件夹权限问题或类似的东西。我尝试将Bin文件夹更改为不是只读,但仍然从Debug它不起作用。

有没有一种已知的方法来纠正这个问题?

1 个答案:

答案 0 :(得分:2)

BadImageFormat异常是指您正在使用的SqlCE dll不适合您运行的体系结构。您的本地计算机可能具有32位(x86)的SQL CE版本,而您的开发计算机可能是64位(x64)架构。如果您在DEV中替换适当的体系结构的SQL CE DLL,那么您的程序应该可以正常工作。