2

我已经为此苦苦挣扎了 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 社区

4

1 回答 1

5

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

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

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

于 2016-06-17T06:36:16.607 回答