2

我正在尝试创建一个使用 Typescript、WinJS 和持久本地数据库的多设备混合应用程序。我已经让它工作到了渲染 WinJS 控件的地步。

但是,当我尝试根据添加 Cordova 插件的说明添加 WebSQL 功能时(转到 config.xml 文件-> 在插件选项卡下,检查 WebSQL Polyfill),它将不再编译。

编译器错误为 C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1886,5): error MSB3774: Could not find SDK "SQLite.WinRT, Version=3.8. 2"。[C:\Users\Lee\Documents\JSApps\TurnstileTS\TurnstileTS\bld\Debug\platforms\windows8\CordovaApp.jsproj]

我拥有所有最新版本的 SQLite 二进制文件(Win8 和 Win8.1)。我意识到该插件似乎依赖于 v3.8.2,所以我尝试使用命令行添加 NuGet 包:

安装包 SQLitePCL -版本 3.8.2

这安装成功,但下一组消息是:

找不到对适用于 Windows 运行时的扩展 SDK SQLite 的引用。验证是否已删除对 Windows 运行时扩展 SDK SQLite 的引用。卸载“SQLitePCL 3.8.2.0”。成功卸载“SQLitePCL 3.8.2.0”。安装失败。滚回来...

这真让我抓狂。我通常是 C# 人,所以我意识到这可能很简单......但我什至不能像其他一些 stackoverflow 建议状态那样添加对 dll 的引用。当我右键单击项目并尝试“添加引用...”时,我收到错误消息:

TargetPlatformWinMDLocation 属性缺少值。

……然后什么都没有。

有任何想法吗?

[编辑] 我安装了 SQLite 3.8.6 的 Win8、Win8.1、WP8、WP8.1 版本。我刚刚尝试构建应用程序的 Windows Phone 版本,它可以工作!但是,Windows 8 不会构建。我将它设置为 x86 而不是 AnyCPU,它并没有改变任何东西。

4

1 回答 1

3

有一个非常简单的解决方法。对于 Windows 8,您需要已安装 SQLite 的 VSIX 包。请注意您安装的版本号!截至 2014 年 10 月 26 日,我安装了 3.8.7。

从资源管理器中的解决方案文件夹中,导航到:

{solution folder}\JavaScript\{project name}\bld\Debug\platforms\windows8

在文本编辑器中编辑项目的 jsproj 文件并向下滚动,直到看到 SQLite 的条目。

<ItemGroup>
    <SDKReference Include="SQLite.WinRT, Version=3.8.7" />
</ItemGroup>

将文件中的版本号更改为计算机上的实际版本。该项目将在启用 WebSQL 插件的情况下构建,并且将实际工作。(我验证了在本地存储中创建的数据库文件。)

注意- 您必须已经在 config.xml 菜单中启用了 WebSQL 插件。

于 2014-10-26T13:16:16.107 回答