Tôi không biết tại sao điều này chưa được đưa vào, nhưng tôi phải tự mình nghiên cứu và tìm ra điều này, vì vậy hy vọng ai đó sẽ tìm thấy câu trả lời này và được cứu rắc rối. Đây là một ứng dụng WPF. Nó hoạt động tốt trên hộp Dev của tôi, nhưng không hoạt động trên máy tính nơi tôi đang sao chép nó và gặp Unable to load DLL 'SQLite.Interop.dll'
lỗi. Tôi đã chuyển qua tất cả các thư mục và tệp được liên kết của nó, trực tiếp từ thư mục "Gỡ lỗi" của tôi sang máy tính khác này khi tôi gặp lỗi tương tự như OP khi tôi chạy nó. Thư mục "bin" chứa DLL của tôi đã được sao chép vào "Debug \ bin" và tất cả đều được bao gồm, cùng với các tệp ứng dụng của tôi khi tôi sao chép sang máy tính khác bằng đường dẫn này, vì vậy nó không thiếu bất kỳ tệp nào.
Những điều tôi thấy đã nói trong các câu trả lời khác không áp dụng:
- Tôi không sử dụng gói NuGet hoặc cần tạo các thư mục x86 hoặc x64 mà dường như gói NuGet tạo ra. DLL của tôi (System.Data.SQLite và SQLite.Interop.dll, cùng với System.Data.SQLite.config) nằm trong thư mục "bin" trong dự án của tôi và được sao chép trong thư mục thủ công (tạo "bin" trong Solution Explorer trong VS, dán DLL vào thư mục này trong Windows Explorer, sử dụng Thêm> Mục hiện có để đưa tệp vào thư mục / dự án VS). Sau đó, tôi tham chiếu chúng dưới dạng Tập hợp được tham chiếu trong dự án của mình bằng cách sử dụng vị trí đó ("Tài liệu tham khảo"> "Thêm tài liệu tham khảo" và duyệt đến một, rửa sạch, lặp lại cho phần còn lại). Điều này đảm bảo dự án của tôi biết chính xác vị trí của chúng.
- Tôi không cần tham chiếu bất kỳ tệp SQLite DLL nào trong app.config hoặc thậm chí chạm vào tệp MyProject.csproj của mình.
- Tôi thậm chí không cần chỉ định một bộ xử lý cụ thể! Bản dựng dự án của tôi là dành cho "Bất kỳ CPU" nào, mặc dù tôi chỉ có các tệp DLL hỗn hợp hoặc 64 bit và sẽ chỉ chạy trên Windows 7+, là các hệ điều hành 64 bit. (không có DLL chỉ x86 / 32 bit)
- Tôi đã chỉ định chúng là "Nội dung" và "sao chép nếu mới hơn" cho các DLL này khi tôi gặp phải lỗi của OP.
Những gì tôi tìm thấy là cái này, từ https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q20 :
(11) Tại sao tôi nhận được một DLLNotFoundException (cho "sqlite3.dll" hoặc "SQLite.Interop.dll") khi thử chạy ứng dụng của tôi?
Thư viện liên kết động được đặt tên (DLL) không thể được định vị hoặc không thể tải được do thiếu phụ thuộc. Đảm bảo thư viện liên kết động được đặt tên nằm trong thư mục ứng dụng hoặc thư mục dọc theo hệ thống PATH và thử lại. Ngoài ra, hãy chắc chắn rằng bộ phân phối thời gian chạy Visual C ++ cần thiết đã được cài đặt trừ khi bạn đang sử dụng thư viện liên kết động được xây dựng liên kết tĩnh với nó.
Nhấn mạnh vào phần in đậm bên trong đoạn văn. Máy tính mục tiêu mới và không có chương trình nào được tải ngoại trừ .NET 4.0. Khi tôi cài đặt C ++, nó có thể hoàn thành các lệnh thành SQLite. Đây phải là một trong những Câu hỏi thường gặp đầu tiên và là một phần của các điều kiện tiên quyết, nhưng nó đã bị chôn vùi ở # 11. Máy tính phát triển của tôi đã tải nó vì nó đi kèm với Visual Studio, vì vậy đó là lý do tại sao nó hoạt động ở đó.
Tải xuống:
Visual C ++ Redistributable cho Visual Studio 2015:
https://www.microsoft.com/en-us/doad/details.aspx?id=48145
Cập nhật 3 (cập nhật tích lũy):
https://www.microsoft.com/en-us/doad/details.aspx?id=53587