Проблема переноса приложения магазина Windows 8 на 8.1 sqlite

В настоящее время я пытаюсь перенаправить свое приложение для магазина Windows на предварительный просмотр Windows 8.1. Проблема в том, что я использовал пакет sqlite-net в одном из своих проектов. Я выполнил шаги, описанные здесь: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/ и скачал предварительную версию sqlite visual studio расширение по этой ссылке: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/. Я добавил ссылку на недавно установленный sqlite для среды выполнения Windows в своем проекте, но при сборке получил ошибку:

Error   2   Windows Runtime type 'Windows.Foundation.Point' was found in
multiple referenced winmd files. Please remove either 'C:\Program Files (x86)\Microsoft
SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral\platform.winmd'
or 'C:\Program Files (x86)\WindowsKits\8.1\References\CommonConfiguration\Neutral\Windows.winmd' 
from the list of referenced files.  C:\Users\Jarosław\Desktop\BCM\Win8Client\MetriceModel\WINMDEXP
MetriceModel (Windows 8.1)

Где-то на одном из форумов кто-то намекнул, что если убрать из проекта ссылку на рантайм-пакет microsoft visual c++, то это решит проблему. После того, как я сделал все это решение, скомпилированное нормально, но во время выполнения я получил следующее исключение:

 Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Исключение выбрасывается в строке:

#if NETFX_CORE
        SQLite3.SetDirectory(/*temp directory type*/2, Windows.Storage.ApplicationData.Current.TemporaryFolder.Path);
#endif

файла SQLite.cs (файл из упомянутого ранее пакета sqlite-net).

Папка проекта bin/Debug/AppX содержит файл sqlite3.dll. Каждый проект в моем решении имеет x86 в качестве целевой платформы. Как решить эту проблему? До переноса проекта все работало нормально.


person Jarek Mazur    schedule 31.07.2013    source источник


Ответы (3)


Вы должны установить официальную версию пакета vsix на странице загрузки sqlite (v3.8.0.2).

В диспетчере надстроек Visual Studio эта версия пакета — 3.7.1.17, и она неверна.

После этого, я думаю, это ошибка, вам нужно выбрать хороший процессор (целевая платформа).

У меня была такая же ошибка, потому что я развернул перенесенное приложение winrt (8.1), скомпилированное в x86, на машине x64... => в Windows 8.0 это работает, но не в Windows 8.1.

Если у вас есть машина x64, вы должны выбрать целевую компиляцию x64. Надеюсь в будущем исправят...

person wlaroche    schedule 01.10.2013
comment
Да, это решение. Проблема в том, что sqlite v3.8.0.2 не был доступен в то время, когда я задал этот вопрос :) - person Jarek Mazur; 01.10.2013
comment
@wlaroche У меня тоже такая же проблема. После перехода на 8.1 все работает нормально, но через несколько дней начинает выдавать эту ошибку. Я пробовал все вышеперечисленные способы. Пожалуйста помоги. - person mayank.karki; 18.10.2013

не могли бы вы переустановить предварительную версию SQLite для WinRT 8.1? Была проблема с первоначальным пакетом, но мы работали с ними над обновлением. http://sqlite.org/download.html

person Tim Heuer    schedule 31.07.2013
comment
Что значит переустановить? Только сегодня я установил этот пакет по той самой ссылке, которую вы предоставили (3-я запись). Не то чтобы я установил какую-то старую версию. - person Jarek Mazur; 31.07.2013
comment
Если у вас правильный (тот же хэш/датированный пакет на странице загрузки), то это хорошо. Я заметил, что у вас есть символ Unicode в вашем имени пользователя и, следовательно, ваш локальный путь к данным приложения. Можете ли вы использовать перегруженный метод SqliteConnection, который требует от вас передачи флагов в этом случае? Это может быть ложным срабатыванием SQLite, учитывая путь к файлу Unicode. - person Tim Heuer; 02.08.2013

Если у вас есть исключение с

SQLite3.SetDirectory(/*temp directory type*/2,windows.Storage.ApplicationData.Current.TemporaryFolder.Path);

Проверьте, использует ли ваш проект x86, а не any CPU

person cre    schedule 30.09.2014