質問

ランニング 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/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top