2

我正在使用 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,版本=1.0.0.0,文化=中性,PublicKeyToken=89ae75803b2c608d”加载类型“SQLitePCL.SQLite3Provider_internal”。

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

4

2 回答 2

2

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

安装在我的项目中

  • SQLitePCLRaw.bundle_green" 版本="1.0.0"
  • SQLitePCLRaw.core 版本="1.0.0

问题是 Akavache 安装了额外的包并升级了一些 SQLite 包。其他人报告了将Azure 移动应用与 Akavache 一起使用的问题。

我建议尝试使用其他东西作为持久密钥库,例如SecureStorage Xamarin 插件组件,或者如果您只需要存储带有数据的用户帐户,Xamarin.Auth可能会起作用。

于 2017-01-19T15:34:36.480 回答
1

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

于 2017-01-19T18:45:23.953 回答