corflags.exe、system.data.sqlite.dllおよびbadimageformatexception
-
25-10-2019 - |
質問
ランニング 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
. 。によると .NETフレームワークで32ビットから64ビットアプリケーション開発に移動する, 、これはアセンブリがあることを意味します 任意のCPU. 。ただし、64ビットアプリケーションからアセンブリを使用すると、エラーが発生します。
System.BadimageFormatexception:ファイルまたはアセンブリ 'System.Data.Sqlite'またはその依存関係の1つをロードできませんでした。誤った形式でプログラムをロードする試みが行われました。ファイル名: 'system.data.sqlite'
corflags.exeが報告している場合 任意のCPU, 、なぜ例外が発生するのですか?アセンブリは誤ってマークされています 32BIT: 0
?
64ビットバージョンも利用できることを知っています。エラーの原因を知りたいだけです。
解決
使用しているSystem.data.sqlite.dllファイルはaです 混合モードアセンブリ, 、つまり、それは純粋な.NETコードではないことを意味します(「ilonly:0」フラグも参照)、「CPU」ではない管理されていないマシンコードも含まれています。したがって、DLLには32ビットネイティブコードが含まれているため、32ビットプロセスにのみロードできます。そうしないと、BadImageFormatexceptionが発生します。
他のヒント
ダウンロードした場合 SQLite-1.0.66.0-binaries.zip
sourceforget.netからファイルには、これにはaが含まれます bin/x64 aのディレクトリ System.Data.SQLite.dll
あなたが探しているものであるファイル。
また、Itaniumディレクトリもあります。
URL は:
http://sourceforge.net/projects/sqlite-dotnet2/files/sqlite%20for%20ado.net%202.0/1.0.66.0/