2016-01-15 8 views
6

私はLINQPad 5クエリー(プレミアム)にSystem.Data.SQLite.Core NuGetパッケージを追加して、その後、次のコマンドを実行してみてください:LINQPadにSQLite Nuget Packageを追加するとDllNotFoundExceptionが発生するのはなぜですか?

new SQLiteConnection(":memory:").Dump(); 

しかし、私は得る:

DllNotFoundException:DLL「SQLiteのを読み込むことができませんが.Interop.dll ': 指定されたモジュールが見つかりませんでした。 (HRESULTからの例外:0x8007007E )

は、どのように私はSQLiteのネイティブDLLを検索する場所をLINQPadを伝えることができますか?

IQドライバは使用しないでください。

答えて

9

このライブラリは、ネイティブであり、X86とX64では異なるイメージを必要とするため、標準的な方法では参照されません。

%localappdata%\LINQPad\NuGet.FW46\System.Data.SQLite.Core\System.Data.SQLite.Core.1.0.99.0\build\net46 

とLINQPad.exeが配置されているフォルダにX86X64サブフォルダをコピー:

LINQPadに回避策は、次のフォルダを配置することです。

+0

ありがとうジョー、素晴らしい仕事。 – MaYaN

+0

それはすごくうまくいった!ありがとう:) –

3

this comment in the LINQPad forumに基づいて別の解決策は、次の操作を実行することです:

  1. コピーSystem.Data.SQLite.dllファイル(そしておそらくも対応System.Data.SQLite.xmlファイルも)どこかで、例えばLINQPadクエリファイルと同じディレクトリに保存します。
  2. x64x86のサブディレクトリをコピーします。ディレクトリからC:¥Users¥your-user-name-goes-here¥AppData¥Local¥LINQPad¥NuGet.FW46¥System.Data.SQLite¥System.Data.SQLite.Core.1.0.103¥build¥net46を手順[1]でファイルをコピーしたのと同じディレクトリにコピーします。
  3. あなたLINQPadクエリに次のコードを追加します。

    System.Environment.SetEnvironmentVariable(
        "PreLoadSQLite_BaseDirectory", 
        @"C:\path\to\which\you\copied\the\files\and\directories\in\steps\one\and\two"); 
    

ジョーAlbahari(LINQPadバイウェイの生みの親!)が提出した答えに、この相対的な利点をこのことですGitリポジトリに簡単にインクルードすることができます(あなたのLINQPadクエリをこのように保存していましたか?)。

関連する問題