Я не знаю, почему это еще не было включено, но я должен был провести исследование и выяснить это для себя, так что, надеюсь, кто-то найдет этот ответ и спасет проблему. Это было для приложения WPF. Он отлично работал на моем устройстве Dev, но не работал на компьютере, где я его копировал, и получил Unable to load DLL 'SQLite.Interop.dll'
ошибку. Я перенес все связанные с ним каталоги и файлы прямо из папки «Debug» на этот другой компьютер, когда у меня возникла та же ошибка, что и у OP при запуске. Моя папка «bin», в которой находились мои библиотеки DLL, была скопирована в «Debug \ bin», и все они были включены вместе с файлами приложения, когда я выполняла копирование на другой компьютер по этому пути, поэтому в ней не было пропущено ни одного файла.
То, что я видел, говорилось в других ответах, которые не были применимы:
- Я не использовал пакет NuGet и не нуждался в создании папок x86 или x64, которые, кажется, создает пакет NuGet. Мои библиотеки DLL (System.Data.SQLite и SQLite.Interop.dll вместе с System.Data.SQLite.config) находятся в папке «bin» в моем проекте и были скопированы вручную (создайте папку «bin» в обозревателе решений в VS, вставьте библиотеки DLL в эту папку в проводнике Windows, используйте Добавить> Существующий элемент для переноса файлов в папку / проект VS). Затем я ссылаюсь на них как на «Связанные сборки» в моем проекте, используя это местоположение («Ссылки»> «Добавить ссылку», и просматриваю одну, промываю, повторяю для остальных). Это гарантирует, что мой проект точно знает, где они находятся.
- Мне не нужно было ссылаться на какой-либо файл DLL SQLite в моем app.config или даже касаться моего файла MyProject.csproj.
- Мне даже не нужно было указывать конкретный процессор! Мой проект предназначен для «Любого процессора», хотя у меня есть только смешанные или 64-битные библиотеки DLL, и я буду работать только в Windows 7+, которые являются 64-битными ОС. (нет только x86 / только 32-битных DLL)
- Я уже определял их как «Содержимое» и «Копировать, если новее» для этих библиотек DLL, когда обнаружил ошибку OP.
Я обнаружил следующее : https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q20 :
(11) Почему я получаю DllNotFoundException (для "sqlite3.dll" или "SQLite.Interop.dll") при попытке запустить мое приложение?
Либо указанная библиотека динамических ссылок (DLL) не может быть найдена, либо ее невозможно загрузить из-за отсутствующих зависимостей. Убедитесь, что именованная динамическая библиотека находится в каталоге приложения или в каталоге по системной переменной PATH, и повторите попытку. Кроме того, убедитесь, что установлен необходимый распространяемый файл среды выполнения Visual C ++. если только вы не используете динамически подключаемую библиотеку, статически связанную с ней.
Акцент мой на этой жирной части внутри абзаца. Целевой компьютер был свежим и не загружал никаких программ, кроме .NET 4.0. После того, как я установил C ++, он смог выполнить команды для SQLite. Это должно было быть одним из первых часто задаваемых вопросов и частью предварительных требований, но он был похоронен в # 11. Мой компьютер уже был загружен, потому что он поставлялся с Visual Studio, поэтому он работал там.
Загрузить:
Распространяемый Visual C ++ для Visual Studio 2015:
https://www.microsoft.com/en-us/download/details.aspx?id=48145.
Обновление 3 (накопительное обновление):
https://www.microsoft.com/en-us/download/details.aspx?id=53587