Xamarin.forms 无法使用PCL Xamarin表单应用程序使Akavache正常工作

Xamarin.forms 无法使用PCL Xamarin表单应用程序使Akavache正常工作,xamarin.forms,akavache,Xamarin.forms,Akavache,我已经为此挣扎了4个小时了,现在我正在转圈。我想让阿卡瓦什参加我的项目。该项目是一个开箱即用的Xamarin表单(便携式)类型。然后,我使用Nuget添加了Akavache 4.1.2(它还添加了Akavache核心和SqlLite3以及ReactiveUI和Splat)。然后我更新了Splat,因为nuget包中的依赖项是错误的(是1.3.3,但应该是1.6.0)。但在添加第一行时,我仍然在启动此应用程序(目前的目标是iOS)时遇到了一个错误(BlobCache.ApplicationName

我已经为此挣扎了4个小时了,现在我正在转圈。我想让阿卡瓦什参加我的项目。该项目是一个开箱即用的Xamarin表单(便携式)类型。然后,我使用Nuget添加了Akavache 4.1.2(它还添加了Akavache核心和SqlLite3以及ReactiveUI和Splat)。然后我更新了Splat,因为nuget包中的依赖项是错误的(是1.3.3,但应该是1.6.0)。但在添加第一行时,我仍然在启动此应用程序(目前的目标是iOS)时遇到了一个错误(BlobCache.ApplicationName=“MyApp”):

System.TypeInitializationException:“Akavache.BlobCache”的类型初始值设定项引发异常。-->系统异常:无法正确初始化Akavache。您是否有对Akavache.dll的引用?
位于:0中的Akavache.Sqlite3.Registrations.Register(IMutableDependencyResolver解析器)[0x0001f]
在Akavache.DependencyResolverMixin.InitializeAkavache(IMutableDependencyResolver This)[0x000c0]中:0
在Akavache.BlobCache.b_uu0()[0x0000d]中:0
在:0中的Splat.Locator.RegisterResolverCallbackChanged(System.Action回调)[0x00039]处
在Akavache.BlobCache..cctor()[0x00018]中:0

PS使用Xamarin 4.1.0运行VS 2015社区虽然在Akavache的文档中没有明确提到,但通常不仅需要在您的PCL上安装NuGet软件包,还需要在您的平台特定项目上安装NuGet软件包

这主要是由于需要特定于平台的实现。因此,尽管您安装的是同一个DLL,但还是添加了另一个实际的DLL(专门针对该平台)


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

您是否在PCL和平台(iOS/Android/etc)项目中安装了该软件包?谢谢。那似乎是丢失的钥匙。其他方面:特定于平台的项目使用Xamarin自己的组件存储并解散Nuget。组件商店也不知道阿卡瓦什。因此,您需要在iOS项目中手动添加一个引用(即在解决方案的“引用”节点上)到\packages\akavache.core.4.1.2\lib\Xamarin.iOS10\akavache.dllGlad以获得帮助!但我不知道你说的“NuGet”是什么意思。您可以在您的平台项目上安装NuGet软件包,这与在任何其他类型的项目上都没有区别。它以前似乎没有这样做,但现在NuGet似乎又开始工作了。我发现了我的特殊问题。在应用程序启动之前,我正在调用Akavache.BlobCache.ApplicationName=“blah”initialized@RichardEdwards实际上,它也在PCL项目的app.cs中工作。我在某个地方读到,有时候nuget软件包安装不正确,OP建议先安装akavache sqlite3软件包,然后再安装akavache软件包。我删除了所有已安装的akavache软件包,并遵循这个建议,它就像一个符咒
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