CorFlags.exe,System.Data.SQLite.dll和BadImageFormatException

时间:2011-01-27 12:52:41

标签: .net sqlite 64-bit clr badimageformatexception

CorFlags.exeSystem.Data.SQLite.dll运行http://sqlite.phxsoftware.com/会产生以下输出。

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 24
ILONLY    : 0
32BIT     : 0
Signed    : 1

如您所见,32BIT未指定且PE等于PE32。根据 Moving from 32-bit to 64-bit application development on .NET Framework ,这意味着程序集是 Any CPU 。但是,使用64位应用程序中的程序集会导致错误:

  

System.BadImageFormatException:可以   不加载文件或程序集   'System.Data.SQLite'或其中一个   依赖。试图做到   加载程序不正确   格式。文件名:   'System.Data.SQLite'

如果CorFlags.exe报告任何CPU ,为什么会发生异常?装配是否错误地标有32BIT: 0

我知道还有一个64位版本,我只是想知道导致错误的原因。

2 个答案:

答案 0 :(得分:9)

您使用的System.Data.SQLite.dll文件是mixed-mode assembly,这意味着它不是纯.NET代码(另请参阅“ILONLY:0”标志),它还包含非托管计算机代码,不能是“任何CPU”。因此,由于DLL包含32位本机代码,因此只能将其加载到32位进程中,否则会发生BadImageFormatException。

答案 1 :(得分:1)

如果您从sourceforget.net下载SQLite-1.0.66.0-binaries.zip文件,则其中包含 bin / x64 目录,其中包含System.Data.SQLite.dll文件,您正在寻找该文件。

它也有一个Itanium目录..

URL是:

http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/