Azure MobileServices和Akavache

时间:2017-01-19 11:18:59

标签: sqlite xamarin.forms azure-mobile-services akavache

我正在使用Azure移动服务构建一个xamarin表单应用程序以进行脱机同步 - 版本为:

  • Microsoft.Azure.Mobile.Client 3.1.0
  • Microsoft.Azure.Mobile.Client.SQLiteStiore 3.1.0
  • SQLitePCL 3.8.7.2
  • SQLitePCLRaw.bundle_green 1.1.2
  • SQLitePCLRaw.core 1.1.2

这个工作正常,直到我添加akavache(5.0.0)到我的项目,然后添加任何akavache特定代码,我运行项目并找到

MobileServiceSQLiteStore store = new MobileServiceSQLiteStore(path);

抛出了TyleLoadException:

无法从程序集'SQLitePCLRaw.provider.internal,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 89ae75803b2c608d'加载类型'SQLitePCL.SQLite3Provider_internal'。

有没有人遇到过这个?当我删除akavache时,一切都恢复正常。

2 个答案:

答案 0 :(得分:2)

是的,我也遇到了这个问题的时间最长。不幸的是,Azure MobileServices和Akavache之间的包依赖关系在Sqlite上发生冲突。当我为移动服务安装NuGet包时,它会安装上面列出的库的不同版本:

安装在我的项目中

  • SQLitePCLRaw.bundle_green“version =”1.0.0“
  • SQLitePCLRaw.core version =“1.0.0

问题是Akavache安装了其他软件包并升级了一些SQLite软件包。其他人使用Azure Mobile App with Akavache报告了问题。

如果您只需要存储包含数据的用户帐户,我建议您尝试使用其他内容作为持久性密钥存储区,例如SecureStorage Xamarin插件组件或Xamarin.Auth

答案 1 :(得分:2)

您需要将SQLiteRaw更新为v1.1.2 - 这是Eric Sink实施的修复程序。适用于Azure移动应用程序的最新.NET Client SDK使用正确的版本。不幸的是,Akavache也需要使用这个版本,所以我们现在有一个部分答案。