Pregunta

Correr Corflags.exe contra System.Data.SQLite.dll de http://sqlite.phxsoftware.com/ produce la siguiente salida.

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

Como puedes ver, 32BIT no se especifica y PE es igual a PE32. De acuerdo a Pasar de 32 bits a 64 bits de desarrollo de aplicaciones en .NET Framework, esto significa que la asamblea es Cualquier CPU. Sin embargo, el uso del ensamblaje de una aplicación de 64 bits da como resultado un error:

System.BadImageFormateException: no se pudo cargar el archivo o el ensamblaje 'System.Data.Sqlite' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto. Nombre del archivo: 'system.data.sqlite'

Si Corflags.exe está informando Cualquier CPU, ¿por qué ocurre la excepción? ¿Está el ensamblaje incorrectamente marcado con 32BIT: 0?

Sé que también hay una versión de 64 bits disponible, solo quiero saber qué está causando el error.

¿Fue útil?

Solución

El archivo system.data.sqlite.dll que está utilizando es un ensamblaje de modo mixto, lo que significa que no es un código .NET puro (ver también el indicador "Ilonly: 0"), contiene también un código de máquina no administrado, que no puede ser "CPU". Entonces, como la DLL contiene un código nativo de 32 bits, solo se puede cargar en un proceso de 32 bits, de lo contrario se produce una BadImageFormateException.

Otros consejos

Si descargas el SQLite-1.0.66.0-binaries.zip Archivo de SourceForget.net, entonces esto contiene un contenedor/x64 directorio con un System.Data.SQLite.dll Archivo que es lo que está buscando.

También tiene un directorio de Itanium.

los Url es:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top