Не удалось загрузить DLL sqlite3 в Универсальное приложение Windows, работающее на мобильном телефоне

Я разрабатываю UWP. Я использую библиотеку sqlite-net-pcl. После обновления моего приложения с RC на RTM я получил ошибку времени выполнения-sqlite3.dll не удалось найти-если он работает на мобильном эмуляторе или устройстве. Он работал prefectly после того, как я добавил ссылку на пакет среды выполнения C++ 2013, и я запустил его на локальной машине.

Сообщение Об Исключении:

сообщение "инициализатор типа для' SQLitePCL.сырые бросил исключение." строка

innerexception сообщение:

{"не удалось загрузить DLL 'sqlite3': указанный модуль не может быть найдено. (Исключение из HRESULT: 0x8007007E)"} система.Исключение {Система.DllNotFoundException}

конечно, я не мог добавить ссылку на "Sqlite для универсальной платформы приложений", потому что я получаю следующую ошибку

Описание Кода Серьезности Ошибка Строки Файла Проекта Полезная Нагрузка содержит два или более файлов с одним и тем же целевым путем 'sqlite3.в DLL'. Источник файлы: C:Program файлы (x86)Microsoft SDKsUAPv0.8.0.0ExtensionSDKsSQLite.UAP.20153.8.11.1RedistDebugARMsqlite3.файл DLL C:UserssMavrikis.nugetpackagesSQLitePCL.raw_basic.7.1buildnativesqlite3_dynamicwinrt81armsqlite3.dll файлы TestApp1

7 ответов


добавить ссылку на "SQLite для универсальной платформы приложений" Это вызовет ошибку:

полезная нагрузка содержит два или более файлов с тем же путем назначения ' sqlite3.в DLL'.

эта ошибка возникает из-за другой версии sqlite3.dll в обоих местах, отмеченных ошибкой. Устраните эту ошибку, просто скопировав

C:\Program файлы (x86)\Microsoft SDKs\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll файлы

до

C:\Users\%USERNAME%\.nuget\packages\SQLitePCL.raw_basic\0.7.1\build\native\sqlite3_dynamic\winrt81\arm\sqlite3.dll файлы

перезапись существующего файла.

перестроить проект. Он должен компилироваться сейчас.


Если вы посмотрите на два конфликтующих местоположения, один, кажется, исходит из более официального расширения Microsoft для UWP, в то время как второй исходит из пакета nuGet.

когда я столкнулся с этой ошибкой, мне нужна была функциональность пакета nuGet, поэтому я решил сохранить его и удалить другую ссылку. Я щелкнул правой кнопкой мыши по проекту в обозревателе решений и пошел в Add->Reference, а затем снял ссылку на SQLite. Казалось, меньше ошибок, чем копирование файл из одного места в другое для меня.

enter image description here


Я получал те же сообщения об ошибках. Я начал с использования SQLite-PCL, который также требовал SQLite для универсальной платформы приложений в качестве ссылки. Позже я переключился на SQLite.Net-PCL. Вот тогда я и получил эти ошибки. Исследуя решение, я нашел эту страницу. Он работал немного. В конце концов я удалил ссылку на SQLite для универсальной платформы приложений, и ошибки исчезли.


поздний ответ, но теперь была проблема; что исправить для меня было сделать обновление пакета Nuget для всего проекта в решении, поскольку один из пакетов все еще использовал старую ссылку и переходил к запущенному проекту, ссылающемуся на другой проект, который был устаревшим.


я исправил аналогичную проблему, выбрав x64 или ARM в конфигурации компилятора.

полезная нагрузка ошибки содержит два или более файлов с тем же путем назначения ' e_sqlite3.в DLL'. Исходный файл: C:\Users\xleon.nuget\packages\SQLitePCLRaw.движение за освобождение.e_sqlite3.v140\1.1.0\runtimes\win10-arm\native\e_sqlite3.файл DLL C:\Users\xleon.nuget\packages\sqlitepclraw.движение за освобождение.e_sqlite3.v140\1.1.0\runtimes\win10-x86\native\e_sqlite3.dll файлы

но это, конечно, не разрешить запуск эмулятора


щелкните правой кнопкой мыши проект UWP и выберите Свойства.

и убедитесь, что цель платформы решения соответствует цели платформы проекта.

Если они разные, вы получите ошибку сборки о копировании файлов в тот же пункт назначения с тем же именем (но разные целевые платформы).

Ensure matching target platforms


мне удалось решить проблему несоответствия, поставив условие в UWP .csproj для включения dll SQLite

<SDKReference Include="SQLite.UWP.2015, Version=3.19.3" Condition="'$(Configuration)'=='Debug'">
  <Name>SQLite for Universal Windows Platform</Name>
</SDKReference>

Мне нужно было работать с версией UWP для отладки, иначе мой конструктор XAMl взорвался бы с "не могу найти SQLite.файл DLL..."