2016-01-15 15 views
6

Tôi đã thêm NuGet gói System.Data.SQLite.Core để tôi LINQPad 5 Query (Premium) và sau đó cố gắng thực hiện như sau:Tại sao tôi nhận được DllNotFoundException khi thêm Gói Nuget SQLite vào LINQPad?

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

Nhưng tôi nhận được:

DllNotFoundException: Không thể tải SQLite DLL' .Interop.dll ': mô-đun được chỉ định không thể tìm thấy. (Ngoại lệ từ HRESULT: 0x8007007E)

Tôi có thể nói LINQPad nơi tìm tệp DLL gốc SQLite ở đâu?

Xin lưu ý rằng tôi không muốn sử dụng Trình điều khiển IQ.

Trả lời

9

Thư viện này không được tham chiếu theo cách tiêu chuẩn, vì nó là nguồn gốc và yêu cầu các hình ảnh khác nhau cho X86 và X64.

Một cách giải quyết trong LINQPad là để xác định vị trí thư mục sau:

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

và sao chép các X86X64 thư mục con vào thư mục nơi LINQPad.exe nằm.

+0

Cảm ơn Joe, đã làm việc tuyệt vời. – MaYaN

+0

Điều đó làm việc tuyệt vời! Cảm ơn :) –

3

Một giải pháp khác, dựa trên this comment in the LINQPad forum, là phải làm như sau:

  1. Sao chép System.Data.SQLite.dll tập tin (và có lẽ cũng tương ứng System.Data.SQLite.xml tập tin quá) một nơi nào đó, ví dụ trong cùng thư mục với tệp truy vấn LINQPad của bạn.
  2. Sao chép các thư mục con x64x86, ví dụ: từ thư mục C: \ Users \ your-user-name-go-here \ AppData \ Local \ LINQPad \ NuGet.FW46 \ System.Data.SQLite \ System.Data.SQLite.Core.1.0.103 \ build \ net46, vào cùng thư mục bạn đã sao chép tệp ở bước [1].
  3. Thêm mã sau đây để truy vấn LINQPad của bạn:

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

Ưu điểm của thân nhân này để câu trả lời gửi bởi Joe Albahari (tác giả của LINQPad by-the-way!) Là điều này có thể dễ dàng được bao gồm trong một repo Git (bạn có được lưu trữ truy vấn LINQPad của bạn do đó).

Các vấn đề liên quan