Calling Device.RuntimePlatform verursacht eine Laufzeitausnahme

8

Ich habe mein Xamarin.Forms-Paket auf das neueste (2.3.4.224) in allen meinen Projekten aktualisiert (Plattform + geteilt) und es scheint, dass ich jetzt nicht mehr Device.OS oder TargetPlatform enum verwenden sollte, da sie veraltet sind.

Der Compiler klagt wegen dieser Zeilen:

%Vor%

Es heißt:

  

"Device.OS ist veraltet. Verwenden Sie stattdessen RuntimePlatform"

So weit, so gut, jetzt möchte ich das beheben und ich habe versucht zu verwenden:

%Vor%

Aber es wirft eine Laufzeitausnahme auf. Hier ist der Stacktrace

  

04-08 14: 57: 34.812 I / MonoDroid (3782): UNGEFANGENE AUSNAHME: 04-08   14: 57: 34.824 I / MonoDroid (3782): System.TypeInitializationException:   Der Typinitialisierer für 'Mob.ApiCommunication' hat eine Ausnahme ausgelöst.   --- & gt; System.MissingMethodException: Die Methode 'Xamarin.Forms.Device.get_RuntimePlatform' wurde nicht gefunden. 04-08   14: 57: 34.824 I / MonoDroid (3782): --- Ende des inneren Ausnahme-Stacks   Spur --- 04-08 14: 57: 34.824 I / MonoDroid (3782): um (Wrapper   verwaltet-zu-nativ)   System.Object: __ icall_wrapper_mono_generic_class_init (intptr) 04-08   14: 57: 34.824 I / MonoDroid (3782): um   Mob.Views.Public.LoginViewModel.RestoreState   (System.Collections.Generic.IDictionary'2 [TKey, TValue] Wörterbuch)   [0x00001] in   C: \ Benutzer ... \ Quelle ... \ LoginViewModel.cs: 52   04-08 14: 57: 34.824 I / MonoDroid (3782): bei Mob.App.OnStart ()   [0x00001] in   C: \ Benutzer ... \ App.xaml.cs: 39 04-08   14: 57: 34.824 I / MonoDroid (3782): um   Xamarin.Forms.Application.SendStart () [0x00000] in   C: \ BuildAgent2 \ Arbeit \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ Application.cs: 228   04-08 14: 57: 34.824 I / MonoDroid (3782): um   Xamarin.Forms.Platform.Android.FormsAppCompatActivity + d__43.MoveNext   () [0x0003b] in   C: \ BuildAgent2 \ Arbeit \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompat \ FormsAppCompatActivity.cs: 426   04-08 14: 57: 34.824 I / MonoDroid (3782): --- Ende des Stack-Trace von   früherer Ort, wo die Ausnahme geworfen wurde --- 04-08 14: 57: 34.824   I / MonoDroid (3782): um   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()   [0x0000c] in   /Users/builder/data/lanes/4468/f913a78a/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143   04-08 14: 57: 34.824 I / MonoDroid (3782): um   System.Runtime.CompilerServices.AsyncMethodBuilderCore.m__0   (System.Object state) [0x00000] in   /Users/builder/data/lanes/4468/f913a78a/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1018   04-08 14: 57: 34.824 I / MonoDroid (3782): um   Android.App.SyncContext + c__AnonStorey0. & Lt; & gt; m__0 () [0x00000] in   /Users/builder/data/lanes/4468/b16fb820/source/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:35   04-08 14: 57: 34.824 I / MonoDroid (3782): um   Java.Lang.Thread + RunnableImplementor.Run () [0x0000b] in   /Users/builder/data/lanes/4468/b16fb820/source/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36   04-08 14: 57: 34.824 I / MonoDroid (3782): um   Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr   native__this) [0x00009] in   /Users/builder/data/lanes/4468/b16fb820/source/monodroid/src/Mono.Android/platforms/android-25/src/generated/Java.Lang.IRunnable.cs:81   04-08 14: 57: 34.824 I / MonoDroid (3782): at (wrapper dynamic-method)   System.Object: 88db5e57-5ac7-4ba4-a574-4ec5eaf704fd (intptr, intptr)

Fehle ich etwas mit der Verwendung von RuntimePlatform? Ich habe mich umgesehen, aber derzeit verwendet jede Dokumentation / Beispiel in Bezug auf die Device -Klasse die veralteten Mitglieder.

    
TaiT's 08.04.2017, 13:24
quelle

3 Antworten

4

Ich kam mit einer Lösung heraus. Was seltsam ist, ist, dass ich, bevor ich auf SO postete, dies bereits für meine Xamarin-Projekte getan habe und es keinen Effekt hatte. Aber dieses Mal, nach dem Lesen dieses Threads in Xamarin Foren: Ссылка das ist Was ich getan habe:

  

Ich habe VisualStudio geschlossen, alle "bin" & amp; "obj" Ordner von all   Projekte in meiner Lösung , dann VS neu gestartet und dann gereinigt & amp;   umgebaute Lösung.

Jetzt gibt Debug.WriteLine(Device.RuntimePlatform); die "Android" Zeichenfolge wie erwartet zurück !,

    
TaiT's 09.04.2017, 11:53
quelle
4

Xamarin.Forms-2.3.4.224 hat die Bedingung geändert Überprüfung von:

%Vor%

An:

%Vor%     
Ekambaram E 12.04.2017 13:18
quelle
0

hvaughan3s Kommentar zum OP ist, was es für mich getan hat. Stellen Sie sicher, dass nicht nur Ihre PCL, sondern auch Ihre Android / iOS / etc-Projekte ihre Pakete aktualisiert haben. Dann machen Sie eine vollständige Reinigung und bauen Sie von dort folgende OP angenommene Antwort.

    
Timothy James 08.05.2017 18:34
quelle