2

У меня возникла ситуация, когда у меня есть приложение Windows Phone Silverlight 8.1, и я хотел бы использовать компонент Windows Runtime в качестве фоновой задачи. В обоих этих проектах я хочу использовать SQLite для доступа к базе данных приложений.Как использовать SQLite в Windows Phone 8.1 Приложение Silverlight и компонент Runtime WinRT

Я нашел аналогичный вопрос здесь:

How to use SQLite in Windows (Phone) 8.1's BackgroundTask

Это почти охватывает ситуацию, но не совсем. Любые идеи о том, как добиться того, о чем я прошу?

я могу получить очень «близко», последнее сообщение об ошибке, что я получаю на стадии компиляции выглядит следующим образом:

Payload contains two or more files with the same destination path 'sqlite3.pdb'. Source files: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\ExtensionSDKs\SQLite.WP80\3.8.11.1\Redist\Debug\ARM\sqlite3.pdb C:\Program Files (x86)\Microsoft SDKs\WindowsPhoneApp\v8.1\ExtensionSDKs\SQLite.WP81\3.8.11.1\Redist\Debug\ARM\sqlite3.pdb

Я видел решение других ошибок этого типа является просто установите Copy Local в false на одной из ссылок, но я не вижу, как это было бы возможно в этом случае, так как оба действительно необходимы.

Заранее благодарен!

UPDATE 1: Используя предложение от scottisafool ​​ниже, я удалил PDB файл из папки SQLite SDK, и это заставляет меня немного дальше, то он по крайней мере, составляет в настоящее время. Тем не менее, тогда у меня возникает другая проблема ...

Затем я начинаю заполнять код для доступа к базе данных в фоновом задании, а после перескакивания через несколько обручей с «недействительным типом WinRT» я нахожусь в точка, где все это компилируется, и похоже, что она должна работать. Однако, когда я затем попытаться запустить приложение и запустить код, который работал отлично прежде, то есть создать базу данных при первой загрузке приложения, я бегу в эту ошибку:

The specified module could not be found. (Exception from HRESULT: 0x8007007E)

со следующим StackTrace:

at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD) at Sqlite.Sqlite3.sqlite3_open_v2(String filename, Database& db, Int32 flags, String zVfs) at SQLite.Net.Platform.WindowsPhone8.SQLiteApiWP8.Open(Byte[] filename, IDbHandle& db, Int32 flags, IntPtr zVfs) at SQLite.Net.SQLiteConnection..ctor(ISQLitePlatform sqlitePlatform, String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks, IBlobSerializer serializer, IDictionary`2 tableMappings, IDictionary`2 extraTypeMappings, IContractResolver resolver) at SQLite.Net.SQLiteConnection..ctor(ISQLitePlatform sqlitePlatform, String databasePath, Boolean storeDateTimeAsTicks, IBlobSerializer serializer, IDictionary`2 tableMappings, IDictionary`2 extraTypeMappings, IContractResolver resolver) at DatabaseContext.OnCreate(String databaseFilePath)

UPDATE 2: Вышеуказанное сообщение об ошибке ТОЛЬКО происходит, когда я добавить ссылку на мой Windows Phone 8.1 Портативная библиотека классов (которая содержит весь код SQLite) для проекта компонента времени исполнения Windows. Оно должно быть в этой точке, что:

  • SQLite для Windows Phone 8,1
  • SQLite для Windows Phone

SDK, оба втянуты в полной заявке. В этот момент я предполагаю, что ссылка на Windows Phone 8.1 втягивается, но ссылка на Windows Phone отсутствует, потому что она рассматривается как уже присутствующая. Это полная гипотеза, но, похоже, она соответствует тому, что я вижу. Любые мысли о том, как действовать? Благодаря!

ответ

2

Я нашел решение:

Добавить ссылку на SQLite DLL только в Silverlight проект приложения и ничего в проекте фона задачи (WinRT выполнения компонента).

Библиотека SQLite.net nuget найдет DLL во время выполнения, как в проекте приложения, так и в фоновом задании (компонент Runtime WinRT).

1

Удалить файл pdb из пакетов nuget.

+0

Хорошо, так что мне кажется, что это помогает мне частично ... –

+0

Посмотрите это сообщение из прошлого года https://invokeit.wordpress.com/2014/08/19/dll-reference -hell-с-WP8-SL81-и-WinRT-компонентный / –

 Смежные вопросы

  • Нет связанных вопросов^_^