Running CorFlags.exe against System.Data.SQLite.dll
from http://sqlite.phxsoftware.com/ produces the following output.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 24
ILONLY : 0
32BIT : 0
Signed : 1
As you can see, 32BIT
is not specified and PE
is equal to PE32
. According to Moving from 32-bit to 64-bit application development on .NET Framework, this means that the assembly is Any CPU. However, using the assembly from a 64 bit application results in an error:
System.BadImageFormatException: Could not load file or assembly 'System.Data.SQLite' or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: 'System.Data.SQLite'
If CorFlags.exe is reporting Any CPU, why does the exception occur? Is the assembly incorrectly marked with 32BIT: 0
?
I know that there is a 64-bit version available too, I'm just want to know what is causing the error.