【问题标题】:Win8 Javascript Metro App, with C# WinRT Component and SQLiteWin8 Javascript Metro 应用程序,带有 C# WinRT 组件和 SQLite
【发布时间】:2013-03-25 01:59:57
【问题描述】:

我正在创建一个 Windows 8 应用商店应用程序。这个应用程序的前端(主项目)是 HTML5/Javascript。我正在关注 this guide by Tim Heuer 创建一个 C# WinRT 组件,该组件包装 SQLite 调用并充当控制器。前端通过Javascript调用该组件,更新数据,获取展示内容。

所以我的解决方案中有 2 个项目,javascript 中的“main”和 C# 中的“db”。我已经设法让 SQLite 根据指南工作。我有这种结构的原因是我试图将应用程序从 iOS 移植到 Win8。 “控制器”部分从一开始就是一个独立的组件,并且已经移植到 C#。

但是,有一个警告。由于this known problem,我必须从“db”项目中删除对C++ Runtime v11 的引用以使其可编译。虽然它在开发机器上运行良好。

然后我得到了这台测试机(准确地说是三星 xe700t1a,Intel i5),我发现在这台测试机上“调试远程”时,Visual Studio 不会部署 SQLite3。结果,我的 SQLite 调用失败并出现错误:"Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"

根据我之前提到的指南,SQLite 是通过 WinRT 扩展提供的,目的是使部署自动化。

我想知道为什么会发生这种情况以及如何使其正确?我还想知道这种结构中的应用程序的 Windows 应用商店是否存在任何认证问题?

我还遇到了this postthis post,这表明目前无法在 WinRT 组件中使用 SQLite。但是我现在改变已经太迟了,如果没有混合结构,这个项目是不可能的。

【问题讨论】:

  • 另外说明,由于访问C:\Program Files\WindowsApps文件夹有限制,远程调试时我什至不知道我的应用部署了什么。
  • 您可以以管理员身份打开命令提示符并手动导航到 WindowsApps 文件夹。如果您执行 Dir 或使用文件资源管理器,您将不会看到它列出。
  • @JimWooley,谢谢。但它看起来不像 RemoteDebugger 在那里部署我的应用程序。找不到对应的文件夹。

标签: c# sqlite windows-8 windows-runtime windows-store-apps


【解决方案1】:

我找到了解决方案。我用了this post的提示,很直接。

我要做的是在解决方案中创建另一个项目,将输出类型设置为 C# 类库。将对 WinRT 的 SQLite 和 sqlite-net (nuget) 包装器的引用移动到这个新项目。之后,我必须手动遍历 sqlite-net 中的类,并将所有“内部”类更改为“公共”。

对于原来的controller项目,我添加using myclasslib;以便找到类定义。

显然,这种解决方法将完美无缺。 SQLite3 已部署,并且没有针对缺少引用的警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2012-06-13
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多