从CorFlags.exe对System.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位版本,我只是想知道导致错误的原因。
答案 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/