Ни один из вышеперечисленных ответов не работал для меня, возможно, потому, что я на VS2015, но это поразило меня как повод добавить мое собственное решение этой проблемы.
Моя конкретная ситуация такая же, как @ Eternal21. У меня есть пользовательский интерфейс WPF, который использует библиотеку клиентов, которая имеет SQLite, добавленную к ней через nuget. И, да, проблема заключалась в том, что Interop.dll не был скопирован в приложение запуска (т. Е. Пользовательский интерфейс WPF, который не имеет установленного SQLite).
Решение простого добавления SQLite в проект WPF с использованием nuget является быстрым и легким решением, если вы спешите.
Мое немного тяжелое решение использует XCOPY, но имеет преимущество в копировании каталогов x86 и x64, а также справляется с сборками Debug и Release. Его недостатком является то, что он содержит жестко запрограммированные названия проектов. Я могу видеть, как можно использовать макрос, чтобы избавиться от первого, но я не мог легко понять, как избавиться от второго, поэтому вам придется вручную его менять, если имя проекта изменилось (но это довольно редко).
Мое решение использовать эти команды XCOPY в пост-билд проекта запуска:
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x64\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x64\*.* /C /F /S /E /Y
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x86\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x86\*.* /C /F /S /E /Y
/C - Продолжает копирование, даже если ошибка (возможно, это не требуется).
/F - отображает полные пути копируемых файлов (может быть опущен для очистки сборки).
/S - Копирует подкаталоги (это был единственный способ получить его для создания папок/x86 и/x64).
/E - копирует каталоги и подкаталоги (возможно, дубликаты/S).
/Y - Подавляет запрос, если файл назначения уже существует.
Я установил это, чтобы работать только на успешной сборке, и это работает для меня. Надеюсь, это поможет кому-то.
Интересно, я вижу их там. Итак, он копирует их туда, где их невозможно найти во время выполнения? Интересно, будет ли он работать для конкретных машин. Я пробовал сборки x86 и x64, но получил ошибки. Может быть, проблема на моем конце, не уверен. – Vimes
Они * * найдены во время выполнения. Если я удалю эти папки, я получаю ошибку загрузки. Если я этого не сделаю, это сработает. Я только открыл это, потому что я копировал файлы из выходного каталога в другое место для запуска, и я не копировал подкаталоги. – Richard
Не для меня. Я получаю исключение DllNotFoundException во время выполнения. Все ваши проекты, созданные как AnyCPU? – Vimes