Domanda

CorFlags.exe contro System.Data.SQLite.dll da http://sqlite.phxsoftware.com/ produce l'uscita seguente.

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

Come si può vedere, 32BIT non è specificato e PE è pari a PE32. Secondo Il passaggio da 32 bit a 64 lo sviluppo di applicazioni bit su .NET Framework , questo significa che l'assemblea è Qualsiasi CPU . Tuttavia, utilizzando il gruppo da un risultati applicativi 64 bit in errore:

System.BadImageFormatException: Could Non file di caricamento o di montaggio 'System.Data.SQLite' o uno dei suoi dipendenze. Un tentativo è stato fatto per caricare un programma con un errato formato. Nome del file: 'System.Data.SQLite'

Se CorFlags.exe sta riportando Qualsiasi CPU , il motivo per cui si verifica l'eccezione? È l'assemblea in modo non corretto segnato con 32BIT: 0?

So che esiste una versione a 64 bit disponibile anche, sto solo voglio sapere che cosa sta causando l'errore.

È stato utile?

Soluzione

Il file System.Data.SQLite.dll che si sta utilizzando è un mista modalità di assemblaggio , il che significa che non è un codice puro NET (si veda anche la: flag “ILONLY 0”), contiene anche codice macchina non gestito, che non può essere “Any CPU”. Così, come la DLL contiene 32 bit codice nativo, può essere caricato solo nel processo a 32 bit, altrimenti un BadImageFormatException si verifica.

Altri suggerimenti

Se si scarica il file SQLite-1.0.66.0-binaries.zip da sourceforget.net allora questo contiene un bin / x64 directory con un file System.Data.SQLite.dll che è quello che state cercando.

Essa ha anche una directory Itanium troppo ..

Il URL è:

http: // sourceforge .net / progetti / SQLite-dotnet2 / files / SQLite% 20for% 20ADO.NET% 202,0 / 1.0.66.0 /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top