冰呂のまったりブログ

ビジネスからプログラミング・デザイン等 日々興味を持った内容を配信しています

【C#】AnyCPUのアプリケーションでSystem.Data.SQLiteが読み込めない

f:id:hirouf:20150117215707j:plain

こんばんは。HIGHROです。
今回、C#の開発でつまづいたのが、AnyCPUでアプリケーションを動かしたい場合に、System.Data.SQLiteを利用しようとすると、以下のようなメッセージが出力されたことです。

ファイルまたはアセンブリ 'System.Data.SQLite, Version=1.0.93.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139' またはその依存関係の1つが読み込めませんでした。
間違ったフォーマットのプログラムを読み込もうとしました。

このSystem.Data.SQLiteですが、いろいろな種類の数がダウンロードできるんですね。。。
ということは、AnyCPUで実際に動かすと、b4bit環境OSでは64bitのDLLが必要で、32bit環境OSでは32bit用のDLLが必要なのです。
このエラーはただ単に、プラットフォームの違いによって出たものでした。

単純。。。

Visual StudioでAnyCPUプラットフォームに対して、SQLiteを利用する場合は以下のとおりです、

  1. Nugetパッケージマネージャで「System.Data.SQLite」を検索
  2. インストールする
  3. 作成したソリューションファイルをビルド
  4. 以下のファイル群が出力されます。

¥App.exe
¥App.exe.config
¥System.Data.SQLite.dll
¥x86¥SQLite.Interop.dll
¥x64¥SQLite.Interop.dll

これで、実際に実行すると、32bit環境のOSで実行するとx86の方を読み込み、64bit環境のOSではx64の方を読み込むようになります。