2016-01-15 6 views
6

Ich habe das System.Data.SQLite.Core NuGet Paket meiner LINQPad 5 Query (Premium) hinzugefügt und dann versuchen Sie Folgendes ausführen:Warum erhalte ich DllNotFoundException beim Hinzufügen von SQLite Nuget Package zu LINQPad?

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

Aber ich bekomme:

DllNotFoundException: Kann DLL ‚SQLite laden .Interop.dll ': Das angegebene Modul konnte nicht gefunden werden. (Ausnahme von HRESULT: 0x8007007E)

Wie kann ich LINQPad sagen, wo das SQLite india DLLs zu finden?

Bitte beachten Sie, dass ich den IQ-Treiber nicht verwenden möchte.

Antwort

9

Diese Bibliothek wird nicht standardmäßig referenziert, da sie nativ ist und unterschiedliche Bilder für X86 und X64 benötigt.

Eine Abhilfe in LINQPad ist den folgenden Ordner zu finden:

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

und kopieren Sie die X86 und X64 Unterordner in den Ordner, in dem LINQPad.exe befindet.

+0

Danke Joe, hat super funktioniert. – MaYaN

+0

Das hat super funktioniert! Vielen Dank :) –

3

Eine andere Lösung, basierend auf this comment in the LINQPad forum, ist folgendes zu tun:

  1. Kopieren Sie die System.Data.SQLite.dll Datei (und wahrscheinlich auch die entsprechenden System.Data.SQLite.xml Datei) irgendwo, z in demselben Verzeichnis wie Ihre LINQPad-Abfragedatei.
  2. Kopieren Sie die x64 und x86 Unterverzeichnisse, z.B. aus dem Verzeichnis C: \ Benutzer \ Ihr-Benutzername-goes-here \ AppData \ Lokal \ LINQPad \ NuGet.FW46 \ System.Data.SQLite \ System.Data.SQLite.Core.1.0.103 \ build \ net46, zu demselben Verzeichnis, in das Sie die Datei in Schritt [1] kopiert haben.
  3. Fügen Sie den folgenden Code in Ihre LINQPad Abfrage:

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

Der Vorteil dieser in Bezug auf die Antwort eingereicht von Joe Albahari (der Schöpfer von LINQPad by-the-Art und Weise!) Ist, dass diese könnte leicht in ein Git-Repo eingefügt werden (sollten Sie Ihre LINQPad-Abfrage also speichern).

Verwandte Themen