2015-07-10 173 views
1

我正在开发一个C#程序,它使用了使用sql compact库的visual studio。在开发中的计算机上,一切都像一个魅力,但在家用电脑上有一个几乎全新的win8安装,我得到一个System.BadImageFormatException:不是一个有效的win32程序,我不知道为什么。System.Data.SqlServerCe.dll不是有效的Win32程序

我已经添加了带有nuget的Microsoft.SqlServer.Compact包。此软件包包含System.Data.SqlServerCe.dll。

我也在Visual Studio的输出窗口中的开发计算机上看到System.Data.SqlServerCe.dll是从GAC加载的。由于我的家用电脑有一个fersh win8安装,它的GAC中没有System.Data.SqlServerCe.dll,但是因为我已经添加了带有nuget的Microsoft.SqlServer.Compact软件包,这应该不是问题吗?

+0

您正在x86系统上使用x64位的DLL,我想 – ErikEJ

+0

我已经通过nuget添加了dll包。至少这是corflags所说的,我认为它们是以目标“任何cpu”编译的。我的项目设置为x86(32位)。所以我认为我以32位模式运行了dll:s。但显然有一些dll:以64位模式运行。是否有一个为win32特别编译的sql server compact库? – narancha

+0

是的,System.Data.SqlServerCe.dll是AnyCPU,但它会根据您的操作系统加载所需的本机DLL文件(x86或x64)。但是可以有问题http://erikej.blogspot.dk/2013/12/the-trouble-with-any-cpuprefer-32.html – ErikEJ

回答

0

问题可能是您的程序或其中一个依赖项是64位,并且您正在32位计算机上运行它。如果您打算在32位系统上运行它,请转至项目属性,并将“平台目标”设置为“任意CPU”或“x86”。

+0

Thx作为答案roryap。但是该项目已被设置为x86 – narancha

相关问题