在Xamarin Forms中使用解析PCL会抛出错误

时间:2015-07-29 14:48:38

标签: dll parse-platform xamarin xamarin.forms portable-class-library

我已经设置了一个带有PCL的Xamarin.Forms项目,一个Android项目和一个iOS项目。 在主项目上我安装了Parse NuGet: NuGet

然后我将Parse.dll和Parse.NetFx45.dll添加到PCL: Added DLLs

(我从https://www.parse.com/docs/downloads下载并从Xamarin SDK获取)

最后在Android项目上我添加了Parse.Android.dll,在iOS项目中我添加了Parse.iOS.dll 当我现在尝试在Android上运行它时,我将收到以下错误:

07-29 16:34:30.274 I/MonoDroid(12848): UNHANDLED EXCEPTION:
07-29 16:34:30.279 I/MonoDroid(12848): System.TypeInitializationException: An exception was thrown by the type initializer for Parse.ParseClient ---> System.NullReferenceException: Object reference not set to an instance of an object
07-29 16:34:30.279 I/MonoDroid(12848):   at Parse.ParseClient..cctor () [0x0008e] in <filename unknown>:0 
07-29 16:34:30.279 I/MonoDroid(12848):   --- End of inner exception stack trace ---
07-29 16:34:30.279 I/MonoDroid(12848): at Begijn.App..ctor () [0x00008] in c:\Users\yenthe.vanginneken\Desktop\Begijn\Begijn\Forms_Example\App.cs:19
07-29 16:34:30.279 I/MonoDroid(12848): at Begijn.Droid.MainActivity.OnCreate (Android.OS.Bundle) [0x000dc] in c:\Users\yenthe.vanginneken\Desktop\Begijn\Begijn\Droid\MainActivity.cs:77
07-29 16:34:30.279 I/MonoDroid(12848): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/1879/5f55a9ef/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.App.Activity.cs:2707
07-29 16:34:30.279 I/MonoDroid(12848): at (wrapper dynamic-method) object.a9794397-c74a-443b-b29b-77d845a6f0d6 (intptr,intptr,intptr) <IL 0x00017, 0x00043>

同样的问题也发生在iOS上。 那么,我错过了什么或我做错了什么? :■ 我也在App.cs中初始化了Parse。

2 个答案:

答案 0 :(得分:2)

像马特说的那样,你需要一个抽象来展示PCL中Parse的功能。

我有sample TodoParse app就是这样:

有关其工作原理的详细信息,请参阅DependencyService docs

答案 1 :(得分:1)

Parse NuGet包版本1.5.3不包含任何PCL程序集,因此我怀疑这是问题所在。它包含以下程序集:

  • 的Android
  • MonoTouch(iOS Classic)
  • Xamarin.iOS(iOS统一版)
  • NET 4.5
  • Windows 8
  • Windows Phone Silverlight 8
  • Windows Phone for Applications 8.1

.NET 4.5 Parse程序集可能正在使用iOS和Android不支持的API。

您需要在PCL中创建一个界面/抽象,并在iOS和Android项目中实现。