web-dev-qa-db-fra.com

Xamarin.Android.Support.Fragment, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = '. Peut-être qu'il n'existe pas dans le profil Mono pour Android?

J'ai essayé d'utiliser la version 25.3.1 des bibliothèques Xamarin.Android.Support, mais à cause d'un bogue, j'ai décidé de revenir à la version précédente 23.3.0. Après le déclassement, je reçois ce message d'erreur ci-dessous. quoi que j'aie essayé, je ne peux pas m'en débarrasser. J'ai essayé de supprimer tous les dossiers bin, obj, tmp, etc. redémarrage de VS2015, nettoyage, reconstruction ...

    Severity    Code    Description Project File    Line    Suppression State
    Error       Exception while loading assemblies: System.IO.FileNotFoundException: Could not load Assembly 
'Xamarin.Android.Support.Fragment, Version=1.0.0.0, Culture=neutral,
 PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
    File name: 'Xamarin.Android.Support.Fragment.dll'
       at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
       at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection`1 assemblies, AssemblyDefinition Assembly, Boolean topLevel)
       at Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)       

J'ai découvert un petit changement dans mon fichier package.config. Tous ci-dessous TargetFramework = "monoandroid71" maintenant. Avant la mise à niveau vers le bas, ils étaient targetFramework = "monoandroid70", je les ai remplacés par manulla mais, cela n’a pas aidé du tout. Comment puis-je résoudre ce problème? 

  <package id="Xamarin.Android.ShortcutBadger" version="1.1.809" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.CustomTabs" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.Palette" version="23.3.0" targetFramework="monoandroid71" />

À quoi ressemblent mes réglages  enter image description here

Références:  enter image description here

MISE À JOUR: J'ai réinstallé tous les paquets de mémoire et j'ai réussi à exécuter le projet Android sur 1 PC, mais il est intéressant de noter que le même projet ne fonctionne pas sur un autre PC. Il renvoie une erreur différente mais similaire.

Severity    Code    Description Project File    Line    Suppression State
Error       The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load Assembly 'myApp, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'myApp.dll'
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.GetAssembly(String fileName)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection`1 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() myApp.Droid     
7
batmaci

J'ai renommé le titre parce que j'ai eu 2 problèmes suivants, ils se ressemblent en effet et les deux ne concernent que le projet Android.

  1. Le premier se plaignait de support.Fragment qui est disponible au-dessus des versions 24.x.x mais que j'utilisais en version 23.0.x. Cela est probablement dû à la rétrogradation de la version 25.3.1. Quoi que j'ai essayé, nettoyer bin, obj, temp, reconstruire n'a pas aidé. J'ai utilisé la commande Update-Package –reinstall pour réinstaller tous les packages NuGet dans la solution. Cela a aidé sur l'un de mes PC. mais sur un autre de mes ordinateurs, je commençais à avoir une 2e erreur comme dans la question.

  2. Le message d'erreur ci-dessous vous indique en effet que le projet PCL ne se trouve pas sous Android. Si vous regardez la fenêtre de sortie, elle vous dira qu’il ne se trouve pas dans le dossier Debug/Bin. Quand je regarde mon dossier Bin, j'ai vu que rien n'était généré.

    La tâche "ResolveLibraryProjectImports" a échoué de manière inattendue . System.IO.FileNotFoundException: Impossible de charger l'assembly 'monApp, version = 0.0.0.0, Culture = neutre, PublicKeyToken ='. Peut-être qu'il n'existe pas dans le profil Mono pour Android? Nom du fichier: 'myApp.dll'

Il semble que cela ait été causé par un paquet NuGet qui utilise .net standard 1.0. mon projet PCL utilisait toujours le profil PCL. Ce n'est normalement pas un problème si vous avez des bibliothèques .Net Core 1.0 comme indiqué dans le article d'Adam Pedley. Comment cela fonctionnait sur mon autre ordinateur était parce que VS2017 était installé sur mon ordinateur. L’installation de VS2017 a .Net Core automatiquement installé. Mais je travaillais sur VS2015 et cela nécessite une installation séparée. 

J'espère que cela aide quelqu'un d'autre à avoir le problème.

3
batmaci

Mon problème est le formulaire xamarin mis à jour vers la version 2.5.0.121934, Il indique ensuite une erreur "Exception lors du chargement des assemblys: System.IO.FileNotFoundException: impossible de charger Assembly 1.0.0.0, Culture = neutre, PublicKeyToken = '. Peut-être n’existe-t-il pas dans le profil Mono pour Android? "

Donc, je rétrograde mon xamarin.form à 2.3.4.247, puis il construit avec succès.

6
UniSize

La meilleure option consiste ici à désinstaller TOUS les packages Xamarin et Android de votre projet Xamarin.Android. Ensuite, installez à nouveau Xamarin.Forms et il ajoutera les dépendances appropriées.

Sinon, essayez de télécharger

Install-Package Xamarin.Android.Support.Fragment
4
Adam Pedley

Malheureusement, les étapes décrites ici ne m'ont pas aidé. Mais je suis allé à la cause.

La première étape consiste à déterminer quel paquet veut utiliser les paquets support.Fragment. 

Pour ce faire, définissez votre sortie MsBuild sur Diagnostics. (tools => options => projets et solutions => Build and run)

Ensuite, compilez, une fois que l'erreur a été signalée, recherchez le support.fragment dans le journal.

Dans mon cas, c'est Acr.Userdialogs qui a essayé d'obtenir le cadre support.Fragment.

Dépendance "Xamarin.Android.Support.Fragment, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null". (TaskId: 415)

Impossible de résoudre cette référence. Impossible de localiser l'assembly "Xamarin.Android.Support.Fragment, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null". Vérifiez que l’assemblage existe sur le disque. 

Si cette référence est requise par votre code, des erreurs de compilation risquent de se produire. (TaskId: 415)

Requis par "Acr.UserDialogs, Version = 1.0.0.0, Culture = neutre, processeurArchitecture = MSIL". (TaskId: 415)

À partir de ce moment-là, il s’agissait de dégrader le framework Acr.Userdialogs jusqu’à ce que cette dépendance disparaisse.

J'espère que cela t'aides :-)

3
Gilbert van Ooijen

Pas une réponse définitive, mais comme ce type de problème de dépendance semble se poser à plusieurs endroits, j'ai finalement trouvé un moyen de voir au moins où se trouvait le chevauchement. Voir la capture d'écran comme suit. Utilisez simplement la fonctionnalité "search" de l'explorateur d'associations pour localiser l'espace de noms dans le message d'erreur. Ensuite, cliquez sur l'espace de noms et il apparaîtra avec les entrées en double et leurs emplacements de DLL.

 error message  Search the duplicate namespace in assembler Explorer

0
GGleGrand

Pour ceux qui pourraient avoir des problèmes avec cela, le truc pour moi était d'ignorer toutes les modifications de mes fichiers app/app/obj/Debug/app.Core.csprojFileListAbsolute.txt et app/app.Droid/Resources/Resource.Designer.cs, puis de supprimer le contenu des dossiers bin et obj et de reconstruire le projet.

0
antonis_st