TypeLoadException, когда я пытаюсь получить соединение SQLite с Windows Phone 8

В настоящее время я разрабатываю приложение для Windows Phone с помощью Xamarin.Forms. Для этого мне нужно использовать базу данных SQLite, чтобы иметь кроссплатформенное приложение для Android и iOS.

Поэтому я выполнил шаги, описанные в следующем документе: Работа с локальной базой данных с помощью SQLite.Net с Xamarin.Forms

Дело в том, что я получаю сообщение об ошибке, когда пытаюсь подключиться к SQLite на Windows Phone 8 со следующим кодом:

var plat = new SQLite.Net.Platform.WindowsPhone8.SQLitePlatformWP8();

Вызов этого метода вызывает TypeLoadException с этим сообщением:

[System.TypeLoadException] = {System.TypeLoadException: Method 'ExtendedErrCode' in type 
'SQLite.Net.Platform.WindowsPhone8.SQLiteApiWP8' from assembly
'SQLite.Net.Platform.WindowsPhone8, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null'
does not have an implementation.
at SQL...

Я понятия не имею, почему я получаю такую ​​​​ошибку. Если у вас есть идеи, было бы здорово!

Заранее благодарю всех, кто сможет мне помочь


person Alexandre D.    schedule 02.10.2014    source источник
comment
Я не понимаю, что в моем диспетчере пакетов NuGet указано, что установленная версия SQLite.Net PCL — платформа WindowsPhone8 — это версия 2.4.0, а в сообщении об ошибке указано «Версия = 2.3.0.0». Может ли это быть связано с проблемой, которую я получаю?   -  person Alexandre D.    schedule 02.10.2014
comment
Обязательно проверьте версии (проверьте, куда указывают ссылки).   -  person Miha Markic    schedule 02.10.2014
comment
Существует несоответствие: мои ссылки относятся к версии 2.3.0.0, а я добавил версию 2.4.0 из своего диспетчера пакетов NuGet. Но я нашел эту проблему только для SQLite.Net.Platform.WindowsPhone8. Справочник по SQLite.Net относится к версии 2.4.0.0. Как я могу решить эту проблему?   -  person Alexandre D.    schedule 02.10.2014
comment
Как я уже сказал, проверьте, где находятся ссылки (проект/ссылки) и проверьте, что находится внутри папки пакетов, созданной NuGet.   -  person Miha Markic    schedule 02.10.2014
comment
Когда я захожу в свойства пакета SQLite.Net.Platform.WindowsPhone8, я нахожу это: * Версия 2.3.0.0 * ...\packages\SQLite.Net.Platform.WindowsPhone8.2.4.0\lib\windowsphone8\x86 \SQLite.Net.Platform.WindowsPhone8.dll Итак, в папке указана версия 2.4.0, но не та версия, которая указана в свойствах   -  person Alexandre D.    schedule 02.10.2014
comment
Возможно проблема с пакетом nuget.   -  person Miha Markic    schedule 02.10.2014
comment
У вас есть идеи, как я могу это исправить?   -  person Alexandre D.    schedule 03.10.2014
comment
Если проблема действительно в пакете, вы не можете ее исправить. Возможно, вы можете получить исходники и подготовить/сослаться на сборки вручную. Или ознакомьтесь с более ранней или предварительной версией (если она есть с исправлением) версии пакета.   -  person Miha Markic    schedule 03.10.2014
comment
Может ли быть проблема с версией в расширении Visual Studio для Sqlite?   -  person valdetero    schedule 28.10.2014


Ответы (2)


Если вы видите путь к ссылочному свойству SQLite.Net.Platform.WindowsPhone8, там есть ссылка на систему платформы x86. Удалите ссылку и выполните поиск в пакете nuget с установленной платформой ARM, и все будет работать нормально.

person damiano76    schedule 05.10.2014

Я решил эту ошибку, добавив [assembly: Dependency (typeof (SQLite_WinPhone))] в AssemblyInfo.cs, но теперь у меня другая ошибка.

person Erick Calderin Morales    schedule 13.12.2014