Продолжайте получать "Невозможно загрузить DLL 'SQLite.Interop.dll':" в VS 2017 с C # .net 4.6.1 - PullRequest
0 голосов
/ 28 января 2019

В моем веб-проекте в Visual Studio 2017 появляется следующая ошибка:

Невозможно загрузить DLL «SQLite.Interop.dll»: указанный модуль не найден.(Исключение из HRESULT: 0x8007007E)

Теперь я прочитал ALL других вопросов StackOverflow с такими же или похожими заголовками и NONE из упомянутыхрешения сработали для меня.

Самое странное, что файл SQLite.Interop.dll находится внутри моей папки \ bin и внутри x86 и x64.

FusionЖурнал включен, но, похоже, он его вообще не видит.

Мне кажется, что что-то кешируется моим IIS.

Вот еще некоторые подробности о моемсреда и то, что я делаю:

  • Я использую IIS 10.0.17134.1
  • Запуск в Windows 10 build 17134.523
  • Использование Visual Studio 2017 (15.8.6)
  • .Net проект настроен на использование .Net 4.6.1
  • Виновным является вызов NHibernate (5.2.3)

    Configuration.BuildSessionFactory ()

  • Мой проект использует FluentNhibernate и многие другие пакеты nuget.
  • Я только используюВ пакете Sqlite Nuget System.Data.SQLite.Core версия 1.0.109.2

Кроме того, у меня есть базовый проект, где это действительно работает.

Я преобразую это в шаблон Visual Studio, экспортирую, а затем создаю новый проект с моим пользовательским типом шаблона Visual Studio.

Это новый проект, который не хочет работать.Фактически, при первом запуске Visual Studio загружает все пакеты nuget, но не копирует файлы sqlite.interop.dll.

Только когда я перекомпилирую решение во второй раз, он копирует файлы.

Но я все еще получаю ошибку.

Поэтому я хочу подчеркнуть,фактические библиотеки DLL (SQLite.Interop.dll) существуют в каталоге bin, и веб-сайт IIS размещен в этом каталоге.

Но я все еще получаю эту ошибку.

Есть ли какая-либо причинапочему это происходит ??

У меня есть ощущение, что это может быть связано с шаблоном Visual Studio, но я не вижу никакой разницы с моим вручную созданным проектом и созданным шаблоном.Но я бы подумал, что это что-то вроде того, почему я получаю ошибку?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 28 апреля 2019

У меня также была эта ошибка некоторое время, когда я пытался работать в файле edmx конструктора Entity Framework.

Я наконец-то нашел решение в FAQ по SQLite https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q10

(11) Почему я получаю DllNotFoundException (для "sqlite3.dll" или "SQLite.Interop.dll") при попытке запустить мое приложение?

Не удается найти указанную библиотеку динамических ссылок (DLL)или он не может быть загружен из-за отсутствия зависимостей.Убедитесь, что именованная динамическая библиотека находится в каталоге приложения или в каталоге по системной переменной PATH, и повторите попытку.Кроме того, убедитесь, что необходимый распространяемый файл среды выполнения Visual C ++ установлен, если только вы не используете динамически подключаемую библиотеку, которая была статически связана с ним.

Поэтому я просто скопировал куда-нибудь файл SQLite.Interop.dll.ссылается на переменную PATH (я был ленив, поэтому я просто отбросил его в C: \ Windows).Мне не пришлось вручную выбирать x86 или x64 для моего проекта, он по-прежнему использует любой процессор, и теперь все работает.

...