4

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

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

但是,有一个警告。由于这个已知问题,我必须从“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 应用商店是否存在任何认证问题?

我还看到了这篇文章这篇文章暗示目前无法在 WinRT 组件中使用 SQLite。但现在改变对我来说已经太晚了,如果没有混合结构,这个项目是不可能的。

4

1 回答 1

1

我找到了解决方案。我使用了这篇文章的提示,它非常简单。

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

对于原始控制器项目,我添加using myclasslib;以便找到类定义。

显然,这种解决方法将完美无缺。SQLite3 已部署,并且没有关于缺少参考的警告。

于 2013-04-06T12:57:25.360 回答