Не удалось загрузить 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..."