用SQLite-WinRT Wrapper构建问题

时间:2015-08-21 17:15:22

标签: sqlite windows-runtime windows-phone-8.1 winrt-xaml

在添加SQLite-WinRT数据库包装器后,我无法让我的应用程序为ARM目标构建。我可以通过一个简单的测试应用程序重现这一点,如下所示:

(这是在Visual Studio 2013中完成的。)

  1. 创建一个空的Windows 8.1通用应用程序(WinRT)
  2. 使用下载 SQLite for Windows Phone 8.1 SQLite for Windows Runtime(Windows 8.1) 工具/扩展和更新。将它们添加到相应项目的参考文献中。
  3. 使用NuGet,将 SQLite-WinRT 包添加到每个项目中。
  4. 针对x86构建(本地计算机或手机模拟器) - >没问题。
  5. 针对ARM构建(电话设备) - >构建错误如下所示(独立于调试或发布版本)。
  6.   

    正在构建“ARM”的项目的处理器体系结构与实现文件“C:\ Users \ jr \ Documents \ Visual Studio 2015 \ Projects \ sqlite-的处理器体系结构”x86“之间存在不匹配test \ packages \ Sqlite-Winrt.3.8.7.1 \ lib \ wpa81 \ SQLiteWinRT.dll“for”C:\ Users \ jr \ Documents \ Visual Studio 2015 \ Projects \ sqlite-test \ packages \ Sqlite-Winrt.3.8.7.1 \ LIB \ wpa81 \ SQLiteWinRT.winmd”。这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和实现文件之间调整处理器体系结构,或者选择具有实现文件的winmd文件,该文件具有与您的目标处理器体系结构相匹配的处理器体系结构项目

    我发布了一个小型测试项目here(Windows Phone 8.1空项目,添加了SQLite,通过NuGet添加了SQLite-WinRT)。

3 个答案:

答案 0 :(得分:3)

转到项目属性打开构建选项卡并将目标平台设置为 ARM enter image description here

修改 你添加了WinRt sqlite。它是在x86上建立的,当你想在ARM进程体系结构上构建它时,它无法构建你需要删除WinRTSQlite DLL,而不是你的项目可以正常工作。这是Code

希望这有帮助

答案 1 :(得分:1)

NuGet软件包问题的一个解决方法是将sqlite-winrt源添加到您的手机或通用应用程序中。

  1. 工具 - >中安装SQLite for Windows Phone 8.1(以及通用的Windows运行时(Windows 8.1))。扩展和更新(如果尚未完成)
  2. 添加对相应项目的引用
  3. 下载sources for sqlite-winrt wrapper
  4. 将SQLiteWinRTPhone81(RT)(以及SQLiteWinRT81,如果需要)文件夹复制到您的解决方案
  5. 在Visual Studio中将项目添加到您的解决方案中(右键单击解决方案 - > 添加 - >现有项目
  6. 添加对相应项目的引用
  7. 编辑sqlite-winrt项目的引用以指向正确版本的SQLite(右键单击项目 - > 属性 - > Common Porperties - > References ):在项目中添加对当前SQLite版本的引用,并删除旧引用
  8. 构建您的解决方案
  9. Project Properties

答案 2 :(得分:0)

我已经下载了你的项目,在我发现你使用SQLite-WinRT和sqlite for windows phone 8.1的参考文献中,你不需要两者。

一旦删除SQLite-WinRT,您的项目就会开始编译。

编辑:

在通用应用程序内部你必须只添加正确的引用,如果是一个手机项目只是为Windows Phone 8.1添加sqlite,而不是在Windows 8.1应用程序中只添加SQLite-WinRT