2016-01-15 20 views
6

dodałem pakiet System.Data.SQLite.Core Nuget do mojego LINQPad 5 Query (Premium), a następnie spróbuj wykonać następujące czynności:Dlaczego otrzymuję wyjątek DllNotFoundException podczas dodawania pakietu SQLite Nuget do LINQPad?

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

Ale otrzymuję:

DllNotFoundException: Nie można załadować SQLite DLL .Interop.dll ': Nie można znaleźć określonego modułu . (Wyjątek od HRESULT: 0x8007007e)

Jak mogę powiedzieć LINQPad gdzie znaleźć SQLite natywnych DLL?

Uwaga Nie chcę używać sterownika IQ.

Odpowiedz

9

Do tej biblioteki nie odwołuje się w standardowy sposób, ponieważ jest natywna i wymaga różnych obrazów dla X86 i X64.

Rozwiązaniem w LINQPad jest zlokalizuj następujący folder:

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

i skopiuj X86 i X64 podfoldery w folderze, w którym znajduje LINQPad.exe.

+0

Dzięki Joe, świetnie się spisał. – MaYaN

+0

To zadziałało! Dzięki :) –

3

Innym rozwiązaniem, na podstawie this comment in the LINQPad forum jest wykonanie następujących czynności:

  1. Skopiuj System.Data.SQLite.dll plików (a prawdopodobnie także odpowiedni System.Data.SQLite.xml plik) gdzieś, np w tym samym katalogu, co plik zapytania LINQPad.
  2. Skopiuj podkatalogi x64 i x86 z katalogu C: \ Users \ your-user-name-goes-here \ AppData \ Local \ LINQPad \ NuGet.FW46 \ System.Data.SQLite \ System.Data.SQLite.Core.1.0.103 \ build \ net46, do tego samego katalogu, w którym skopiowałeś plik w kroku [1].
  3. Dodaj następujący kod do zapytania LINQPad:

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

Zaletą tego w stosunku do odpowiedzi przekazywanych przez Joe Albahari (twórca LINQPad by-the-way!) Jest to, że może być łatwo dołączony do repozytorium Git (czy w ten sposób przechowujesz zapytanie LINQPad w ten sposób).

Powiązane problemy