Не удалось загрузить DLL sqlite3 в Universal Windows App, запущенном на мобильных устройствах

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

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

Сообщение "Инициализатор типа для" SQLitePCL.raw "бросил exception." string

Сообщение innerexception:

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

Конечно, я не мог добавить рецензию на "Sqlite for Universal App Platform", потому что я получаю следующую ошибку:

Код степени серьезности Описание Ошибка в файле File File Error два или более файлов с одним и тем же целевым адресом "sqlite3.dll". Источник файлы: C:\Program Files (x86)\Microsoft SDKs\СХ\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll C:\Users\sMavrikis.nuget\packages\SQLitePCL.raw_basic\0.7.1\build\native\sqlite3_dynamic\winrt81\arm\sqlite3.dll TestApp1

Ответы

Ответ 1

Добавить ссылку на "SQLite for Universal App Platform" Это вызовет ошибку:

Полезная нагрузка содержит два или более файла с одним и тем же целевым адресом "sqlite3.dll".

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

C:\Program Files (x86)\Microsoft SDK\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll

к

C:.\Users\%USERNAME%\NuGet\пакеты\SQLitePCL.raw_basic\0.7.1\сборки\родной\sqlite3_dynamic\winrt81\рука\sqlite3.dll

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

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

Ответ 2

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

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

введите описание изображения здесь

Ответ 3

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

Ответ 4

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

Ответ 5

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

Загрузка полезной информации содержит два или более файлов с одним и тем же целевым адресом "e_sqlite3.dll". Исходные файлы: C:\Users\xleon.nuget\пакеты\SQLitePCLRaw.lib.e_sqlite3.v140\1.1.0\времени работы\win10-рука\родной\e_sqlite3.dll C:\Users\xleon.nuget\Packages\sqlitepclraw.lib.e_sqlite3.v140\1.1.0\времени работы\win10-x86\родной\e_sqlite3.dll

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

Ответ 6

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

И убедитесь, что цель платформы решений соответствует целевой платформе Project Platform.

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

Обеспечить соответствие целевых платформ

Ответ 7

Мне удалось решить несоответствие, поставив условие в 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..."