使用PCL Xamarin Forms应用程序无法使Akavache工作

时间:2016-06-16 17:26:26

标签: xamarin.forms akavache

我现在已经苦苦挣扎了4个小时,现在我正在转圈。我正在尝试让Akavache为我的项目运行。该项目是开箱即用的Xamarin Forms(Portable)类型。然后使用Nuget我添加了Akavache 4.1.2(它还添加了Akavache Core和SqlLite3以及ReactiveUI和Splat)。然后我更新了Splat,因为nuget包中的依赖是错误的(1.3.3但应该是1.6.0)。但是当我添加第一行你应该定位的那个(BlobCache.ApplicationName =“MyApp”)时,我仍然在启动这个应用程序时出错(现在定位到iOS):

System.TypeInitializationException: The type initializer for 'Akavache.BlobCache' threw an exception. ---> System.Exception: Failed to initialize Akavache properly. Do you have a reference to Akavache.dll?
at Akavache.Sqlite3.Registrations.Register (IMutableDependencyResolver resolver) [0x0001f] in <filename unknown>:0 
at Akavache.DependencyResolverMixin.InitializeAkavache (IMutableDependencyResolver This) [0x000c0] in <filename unknown>:0 
at Akavache.BlobCache.<.cctor>b__0 () [0x0000d] in <filename unknown>:0 
at Splat.Locator.RegisterResolverCallbackChanged (System.Action callback) [0x00039] in <filename unknown>:0 
at Akavache.BlobCache..cctor () [0x00018] in <filename unknown>:0 

PS使用Xamarin 4.1.0运行VS 2015社区

1 个答案:

答案 0 :(得分:5)

虽然Akavache的文档中没有明确提到,但通常需要不仅在您的PCL上安装NuGet软件包,还需要在您的平台特定项目上安装NuGet软件包。

这主要是由于需要的平台特定实现。因此,虽然您正在安装相同的DLL,但还添加了另一个实际的DLL - 专门用于该平台。

在某些情况下,需要在特定于平台的项目中进行某种初始化调用,尽管这种情况似乎并非如此。