Xamarin.forms: [Bug] L'application Android se bloque depuis la mise à jour vers Xamarin Forms v4

Créé le 20 sept. 2019  ·  56Commentaires  ·  Source: xamarin/Xamarin.Forms

Depuis la mise à jour vers 4.2.0.815419, je reçois maintenant l'exception suivante lancée à LoadApplication (new App (dbPath, builder)); dans MainActivity.cs

J'ai également essayé la v4.3.0.819712-pre2 au cas où un correctif serait contenu.

Je vais devoir revenir à 3.5.0.129452 mais j'ai pensé qu'il serait utile de consigner le problème.

La liaison est définie sur Aucun. L'application UWP fonctionne.

09-25 13:17:14.076 E/mono    ( 5126): 
09-25 13:17:14.076 E/mono    ( 5126): Unhandled Exception:
09-25 13:17:14.076 E/mono    ( 5126): System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 01000275 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null)
09-25 13:17:14.076 E/mono    ( 5126):   at (wrapper dynamic-method) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono    ( 5126):   at (wrapper native-to-managed) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono-rt ( 5126): [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 01000275 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null)
09-25 13:17:14.076 E/mono-rt ( 5126):   at (wrapper dynamic-method) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono-rt ( 5126):   at (wrapper native-to-managed) System.Object.7(intptr,intptr,intptr)
high regression Android bug

Commentaire le plus utile

J'ai trouvé que System.Collections.Generic.Queue est disponible dans

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ System.dll

et

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

Il n'est pas disponible dans

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

Donc, si une dll qui repose sur Queue est conforme à VS2019 et s'exécute sur VS2017, une exception ne peut pas charger la file d'attente à partir de mscorlib.
Je pense que non seulement Queue, mais aussi d'autres classes de l'espace de noms Collections.Generic pourraient souffrir du même problème.

Tous les 56 commentaires

À première vue, cela semble être une sorte de problème de mise en cache. Assurez-vous d'avoir mis à jour tous les projets vers la même version de Xamarin.Forms, puis nettoyez la solution. Pour être sûr de supprimer les dossiers bin et obj de chacun des projets ainsi que sur le système de fichiers. Supprimez également l'application de l'émulateur ou de l'appareil.

Faites une reconstruction, exécutez et espérons que tout devrait être résolu. Avez-vous déjà essayé l'une de ces choses?

J'ai trouvé que je devais désinstaller toutes les applications 3.0 existantes sur le téléphone, déployer à nouveau et créer votre solution, alors cela devrait être correct. Cela pourrait bien être un rechargement à chaud qui s'est produit plusieurs fois pour moi, alors assurez-vous que cela est désactivé.

Bonjour @jfversluis, ces problèmes se produisent également sur devops et appcenter, les deux zones nettoient la zone de travail avant toute construction, je crois

La recherche de ce message d'erreur semble avoir à voir avec les packages de ciblage et de support Android. Les avez-vous également mis à jour? Pourriez-vous fournir plus d'informations sur les packages installés avec quelle version et quelle version Android vous essayez de cibler?

Oui, j'ai mis à jour mon niveau d'API vers Andriod 9

Le ven 20 septembre 2019 à 15 h 46 Gerald Versluis [email protected]
a écrit:

La recherche de ce message d'erreur semble avoir à voir avec Google
des packages de ciblage et de support. Les avez-vous également mis à jour? pouvez-vous
fournir des informations supplémentaires sur les packages installés avec lesquels
version et quelle version Android vous essayez de cibler?

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/xamarin/Xamarin.Forms/issues/7602?email_source=notifications&email_token=ABK34HK3EWZVVCQWHUGBMZLQKTO3PA5CNFSM4IYVWRJKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7G5L6I#issuecomment-533583353 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ABK34HLYSFLSUXVEIB5H67LQKTO3PANCNFSM4IYVWRJA
.

-

Cordialement
David Buckley
M: 07871 884 546

J'ai le même problème après la mise à jour vers la dernière version, dans la version précédente, tout fonctionne correctement, mais lorsque je mets à jour le xamarin, l'erreur se produit.

Toute personne rencontrant ce problème peut-elle joindre un petit projet illustrant ce problème? Merci!

Je vois quelqu'un avec le même problème ici sur SO: https://stackoverflow.com/questions/58032635/updating-nuget-caused-exception-unhandled-system-typeloadexception

Cela semble avoir à voir avec Maps? Quelqu'un peut-il vérifier cela? Et ce que Samantha a dit, une reproduction serait super géniale!

J'ai exactement le même problème, sous Android et iOS. Sur Android, l'application se construit et se bloque au démarrage sur iOS, l'application ne se construit pas (lorsque vous ciblez une version de simulateur d'appareil réel fonctionne bien). J'obtiens l'erreur référencée dans le lien de débordement de pile ci-dessus concernant System.Collections.Generic.Stack`1

Le problème n'existe pas si je reviens à 4.2.0.778463

Je ne sais pas si cela est lié aux cartes, mais mon application inclut le package Maps nuget.

Je n'utilise pas de cartes, cela se produit même dans un nouveau projet

@KennyMack pourriez -vous mettre cela dans un projet de reproduction et l'ajouter ici?

J'ai eu la même erreur lors de la mise à niveau vers 4.2 SR2.
J'ai essayé plusieurs suggestions, mis à jour tous les packages nuget, mais l'application s'est toujours plantée.
J'ai commencé une nouvelle application vierge (en 4.0), ça marche bien!
Mise à niveau vers 4.2 SR2, s'est écrasée!
Ensuite, j'ai mis à jour Visual Studio (16.2.5) et le problème a disparu !!

@KennyMack pourriez -vous mettre cela dans un projet de reproduction et l'ajouter ici?

J'ai simplement créé une nouvelle application vide et j'obtiens également une TypeLoadException (mais sans aucun détail) dans VS2017 15.9

image

Ensuite, j'ai mis à jour Visual Studio (16.2.5) et le problème a disparu !!

avec VS2019, je suis également capable de compiler et d'exécuter l'application sans aucun problème.

@jfversluis Des idées pourquoi cela échoue-t-il pour VS2017? S'agit-il d'un problème mono avec VS2017 15.9?

@jfversluis Voici le projet, je viens de créer et de mettre à jour le xamarin vers la version 4.2.0.815419 et l'application plante au démarrage
https://github.com/KennyMack/ExampleFail

J'ai eu le même problème en utilisant AppCenter, en utilisant également 4.2.0.815419 les versions iOS et Android ont échoué avec le même message System.Collections.Generic.Stack de «classe attendue».

J'ai changé la configuration de construction dans AppCenter pour utiliser: Version du SDK: Xamarin.iOS 12.14 et version Xcode: 10.3.
Le problème semble avoir disparu depuis le passage à ces paramètres, sur les versions iOS (je n'ai pas encore essayé Android).

@KennyMack j'ai retiré votre repro et tout fonctionne bien pour moi

image

@KennyMack j'ai retiré votre repro et tout fonctionne bien pour moi

quel VS utilisez-vous? Le problème ne se produit qu'en 2017 et non en 2019

@KennyMack j'ai retiré votre repro et tout fonctionne bien pour moi

image

C'est étrange, dans ma version ne fonctionne pas.
J'utilise Visual Studio 2017 version 15.9.16.
dois-je mettre à jour autre chose?

Mon erreur

Il plante pour moi sur VS 2017: - /

Nous venons de déplacer notre pipeline de construction pour commencer à utiliser VS 2019, donc je fouille en interne pour voir les exceptions ci-dessus

J'ai le même problème que @ dannythomas13 l'a dit. Initialement, ma version de formulaires xamarin était 3.4.0.1008975 et lorsque je l'ai mise à jour vers 4.2.0.815419, l'application se bloque montrant le même problème. Même j'ai essayé dans un projet vierge, il se bloque en donnant la même erreur. Mon vs est vs entreprise 2017 version 15.9.13.

J'ai le même problème que @ dannythomas13 et @zimbabirbal l'ont dit. vous pouvez le réparer pour qu'il fonctionne également avec VS2017?

J'ai trouvé que System.Collections.Generic.Queue est disponible dans

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ System.dll

et

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

Il n'est pas disponible dans

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

Donc, si une dll qui repose sur Queue est conforme à VS2019 et s'exécute sur VS2017, une exception ne peut pas charger la file d'attente à partir de mscorlib.
Je pense que non seulement Queue, mais aussi d'autres classes de l'espace de noms Collections.Generic pourraient souffrir du même problème.

La version iOS sur VS2017 a le même problème. Voir # 7638.

Eu la même erreur sur VS 16.0.3, mis à niveau vers le dernier (16.3.1) et le problème est résolu. #la magie

Donc, si une dll qui repose sur Queue est conforme à VS2019 et s'exécute sur VS2017, une exception ne peut pas charger la file d'attente à partir de mscorlib.
Je pense que non seulement Queue, mais aussi d'autres classes de l'espace de noms Collections.Generic pourraient souffrir du même problème.

C'est quelque chose que l'équipe Xamarin.Android devrait examiner @jonathanpeppers @brendanzagaeski

Cela a commencé à se produire parce que nous avons déplacé nos serveurs de build de VS 2017 à VS 2019, qui a des versions plus récentes des SDK XA / XI / Mono. Lorsque vous construisez avec des versions plus récentes de ces SDK, ces versions ne fonctionneront plus sur les anciennes versions.

C'est le changement spécifique déclenchant cette exception https://github.com/mono/mono/pull/11511

La prochaine version de 4.2 sera compilée contre VS 2017 afin qu'elle puisse toujours être utilisée sur VS 2017, mais la 4.3 vous obligera à avoir au moins 16,3

La raison en est que l'exigence de la version 4.3 concerne littéralement toutes les plates-formes nécessitant Visual Studio 16 et / ou 16.3 pour utiliser les derniers SDK

XCode11 nécessite 16,3
Android 10 nécessite 16,3 et Android X nécessite au moins 16,2
WinUI nécessite au moins VS 2019 pour utiliser les SDK les plus compatibles

Jusqu'à présent, nous n'avons pas vraiment eu besoin de construire avec les nouveaux SDK, mais maintenant nous devons le faire pour prendre en charge les nouveaux frameworks

La prochaine version de 4.2 sera compilée contre VS 2017 afin qu'elle puisse toujours être utilisée sur VS 2017, mais la 4.3 vous obligera à avoir au moins 16,3

ok, nous allons donc arrêter d'utiliser Xamarin.Forms. VS2019 est interdit. Au revoir. Au revoir et RIP Xamarin.

@ MagicAndre1981 Nous discutons toujours des options. Nous n'avons pas encore pris la décision d'exiger VS2019 pour 4.3.

Seriez-vous prêt à partager pourquoi VS2019 est un "non-aller"? Quel est votre calendrier pour la mise à niveau?

Merci!

Seriez-vous prêt à partager pourquoi VS2019 est un "non-aller"?

à cause de l'interface utilisateur cassée (horrible fenêtre de démarrage modale, cette "boîte de dialogue Nouveau projet" en ruine et l'icône de notification en bas où je l'oublie toujours). VS2019 répète le désastre VS2012

Il y a aussi un crash sur iOS. Est-ce également causé par l'ancienne version de VS pour Mac? Parce que pour moi, cela échoue sur Azure DevOps où j'ai sélectionné macOS X Mojave 10.14 comme agent pour une build.

En soutenant que ce problème affecte les pipelines de compilation sur DevOps à l'aide de macOS 10.14. Existe-t-il un correctif à court terme ou sommes-nous bloqués dans l'attente d'une nouvelle version 4.2.X?

Salut,
nous avons besoin d'aide et de conseils.

Je dois mettre à niveau vers 4.2.0.815419 qui corrige un problème avec l'URI d'image ne fonctionnant pas dans les versions précédentes.
Je devais livrer à un client aujourd'hui mais je n'ai pas pu.
Je voudrais éviter de revenir à une très ancienne version de 4.

Cependant toute la journée à essayer de faire construire iOS contre 4.2.0.815419 obtenir
"Echec de la résolution de" System.Collections.Generic.Stack`1 ". J'ai essayé toutes sortes de choses ... et j'ai obtenu différentes erreurs que je ne mentionne pas ici car cela pourrait semer la confusion.

Quelque chose a définitivement changé avec 4.2.0.815419 et nous ne pouvons plus construire sur le pipeline azure sur iOS.

ma dernière version de travail utilisait mono 5_16 avec 4.1.0.709244

Aucune suggestion ?

J'avais le même problème.
J'ai installé Xamarin Essentials et nuget a demandé à mettre à niveau Xamarin vers la version 4.2.0.815419.
Je suis retourné à la version 4.2.0.778463 et il est retourné au travail

Je vois le même problème que @ developer9969 et @oliveiraugusto avec la version 4.2.0.848062 .

MTOUCH: erreur MT2002: échec de la résolution de la référence "System.Collections.Generic.Stack`1" de "mscorlib, Version = 2.0.5.0, Culture = neutre, PublicKeyToken = 7cec85d7bea7798e"

J'exécute la version iOS avec le scritp ci-dessous, en spécifiant la version du SDK MONO et Xcode

/ bin / bash -c "sudo $ AGENT_HOMEDIRECTORY / scripts / select-xamarin-sdk.sh 5_18_1"
/ bin / bash -c "sudo xcode-select -s /Applications/Xcode_10.2.1.app/Contents/Developer"

Des solutions de contournement?

Bonjour l'équipe
Je reçois également le même problème, y a-t-il un correctif auquel nous pouvons nous attendre pour travailler les formulaires xamarin sur VS 2017?

@ryanmendoza Pour corriger la version de devops iOS, vous devez utiliser xCode 11 et Xamarin sdk 6_4_0. Ajoutez la tâche de génération «Utiliser .NET Core» au pipeline à l'aide de la version 3.0.100.

@ryanmendoza

En soutenant que ce problème affecte les pipelines de compilation sur DevOps à l'aide de macOS 10.14. Existe-t-il un correctif à court terme ou sommes-nous bloqués dans l'attente d'une nouvelle version 4.2.X?

Il existe actuellement une nouvelle version, est-ce que cela règle les choses pour vous?

Ce problème doit être résolu dans les dernières versions de Xamarin.Forms publiées sur NuGet. Je vous remercie!

Ce problème doit être résolu dans les dernières versions de Xamarin.Forms publiées sur NuGet.

quelle version / numéro de build? Combien de temps XF fonctionnera-t-il pour les utilisateurs de VS2017?

4.2.0.848062 et 4.3.0.851321-pre3 sont tous deux compatibles avec VS2017.

Je peux confirmer que l'utilisation des dernières versions (mentionnées ci-dessus) a résolu le problème signalé sans qu'il soit nécessaire de mettre à niveau / modifier vos outils existants.

4.2.0.848062 ... compatible avec VS2017.

merci, je peux le confirmer.

Il est inutile de faire fonctionner les nouvelles versions de Xamarin.Forms avec les anciens outils. Les personnes qui souhaitent utiliser d'anciens outils peuvent toujours utiliser d'anciennes versions de Xamarin.Forms. Le besoin de prendre en charge d'anciens outils serait un frein au développement dans un dépôt qui a déjà trop de freins au développement.

J'ai eu le même problème sur Xamarin.Forms.iOS version 4.3.0.991211 sur MacOS Mojave

@samhouts ce problème est fermé, mais le problème existe toujours ... Où est la solution officielle, ou donnez-nous au moins la solution de contournement pour résoudre ce problème, s'il vous plaît?

Regardez le journal de compilation dans Azure DevOps:
image

_Type de projet - Xamarin.iOS
Mono - 5.12.0
XCode - 10.2.1_

ma configuration .yaml dans Azure DevOps

@beylkhanovdamir quelle version de Xamarin.Forms utilisez-vous? Cela ne devrait plus se produire après les versions précédentes

@jfversluis Cela m'arrive toujours aussi (Xamarin.Forms.iOS version 4.3.0.991211 )

@ Sonic3R vous utilisez VS2017 sous Windows? VSMac? Pouvez-vous donner plus de détails?

Visual Studio pour Mac, version 8.3

@jfversluis vous pouvez consulter ma configuration .yaml dans DevOps

ps J'utilise '_macOS-latest_' vmImage et la version XF ci-dessous
image

@beylkhanovdamir avez-vous vu ce commentaire: https://github.com/xamarin/Xamarin.Forms/issues/7602#issuecomment -537847507

Je vois que vous définissez la version du SDK manuellement et que vous utilisez Xcode 10, vous voudrez peut-être envisager d'utiliser les versions actuelles avec la dernière version de Forms.

@ Sonic3R pourriez-vous nous en dire un peu plus sur les erreurs que vous voyez dans VSMac lors de la construction? Quelle version de Xcode utilisez-vous?

Les gars, j'ai trouvé que son rechargement à chaud est réactivé, désactiver le rechargement à chaud et
l'application ira bien.

Le mar, 3 décembre 2019 à 12:47 PM Gerald Versluis [email protected]
a écrit:

@beylkhanovdamir https://github.com/beylkhanovdamir avez-vous vu ça
commentaire: # 7602 (commentaire)
https://github.com/xamarin/Xamarin.Forms/issues/7602#issuecomment-537847507

Je vois que vous définissez la version du SDK manuellement et que vous utilisez Xcode 10,
vous voudrez peut-être envisager d'utiliser les versions actuelles avec les plus récentes
Version des formulaires.

@ Sonic3R https://github.com/Sonic3R pourriez-vous partager un peu plus
à propos des erreurs que vous voyez dans VSMac lors de la construction?

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/xamarin/Xamarin.Forms/issues/7602?email_source=notifications&email_token=ABK34HN56WUZL3KRXAAKWVDQWZIPTA5CNFSM4IYVWRJKYY3PNVHWWWK3TULHS4DF
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/ABK34HM2BQTF5PHNEBQVEFDQWZIPTANCNFSM4IYVWRJA
.

-

Cordialement
David Buckley
M: 07871 884 546

@jfversluis

avez-vous vu ce commentaire: # 7602 (commentaire)

oui, j'ai vu, mais je ne peux pas, car nous avons un projet où le FW cible est .netstandard 2.0 (c'est-à-dire pas 2.1 qui est compatible avec .net core 3.0), et dans ce cas, j'obtiendrai beaucoup d'erreurs de compilation .
Mais peut-être, pour l'instant, c'est vraiment le dernier moyen de résoudre ce problème

Salut - Obtenir le message d'erreur ci-dessous sur Visual studio 2017 prend en charge Xamarin.iOS 12.4.0.64. Quelqu'un s'il vous plaît nous aider à ce sujet car cela a bloqué notre processus de déploiement complet maintenant.

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets (795,3): erreur MT2002: échec de la résolution de "System.Collections.Generic.Stack `1" référence de "mscorlib, Version = 2.0.5.0, Culture = neutre, PublicKeyToken = 7cec85d7bea7798e"

Ce message d'erreur vient UNIQUEMENT après le couplage avec mac qui a le même Xamarin.iOS, le dernier xCode et mono 5.18.

Merci d'avance

@ryanmendoza Pour corriger la version de devops iOS, vous devez utiliser xCode 11 et Xamarin sdk 6_4_0. Ajoutez la tâche de génération «Utiliser .NET Core» au pipeline à l'aide de la version 3.0.100.

Qu'est-ce que cela veut dire? Je suis assez confus par cela, avez-vous un exemple YAML que vous pourriez partager?

Que suis-je en train de créer avec la tâche .netcore? Le projet iOS ... comment? Il me manque clairement quelque chose.

Cette page vous a été utile?
0 / 5 - 0 notes