Frage

Betrieb Corflags.exe gegen System.Data.SQLite.dll aus http://sqlite.phxsoftware.com/ erzeugt die folgende Ausgabe.

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

Wie du sehen kannst, 32BIT ist nicht spezifiziert und PE ist gleich PE32. Entsprechend Wechsel von 32-Bit auf 64-Bit-Anwendungsentwicklung auf .NET Framework, Dies bedeutet, dass die Baugruppe ist Jede CPU. Die Verwendung der Montage aus einer 64 -Bit -Anwendung führt jedoch zu einem Fehler:

System.BadimageFormatexception: Es konnte keine Datei oder Montage 'System.Data.sqlite' oder eine seiner Abhängigkeiten geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden. Dateiname: 'System.data.sqlite' '

Wenn corflags.exe berichtet Jede CPU, warum tritt die Ausnahme auf? Ist die Baugruppe falsch mit markiert mit 32BIT: 0?

Ich weiß, dass auch eine 64-Bit-Version verfügbar ist. Ich möchte nur wissen, was den Fehler verursacht.

War es hilfreich?

Lösung

Die von Ihnen verwendete System.data.sqlite.dll -Datei ist a gemischte Mode-Montage, Dies bedeutet, dass es sich nicht um einen reinen .NET -Code handelt (siehe auch das Flag „Ilonly: 0“), es enthält auch nicht verwalteten Maschinencode, der nicht „eine CPU“ sein kann. Da die DLL 32-Bit-native Code enthält, kann er nur in einen 32-Bit-Prozess geladen werden, ansonsten tritt ein badimageFormatexception auf.

Andere Tipps

Wenn Sie die herunterladen SQLite-1.0.66.0-binaries.zip Datei von SourceForget.net dann enthält dies a bin/x64 Verzeichnis mit a System.Data.SQLite.dll Datei, wonach Sie suchen.

Es hat auch ein Itanium -Verzeichnis.

Das URL ist:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top