7 votes

Plusieurs assemblages avec une erreur d'identité équivalente avec Xamarin.iOS

J'essaie de créer une application Xamarin iOS en utilisant des dépendances .NET Standard 2.0. L'une de ces dépendances comprend une référence à l'objet System.Reflection.Emit 4.3.0 Paquet NuGet. Cela entraîne une erreur de construction lors de la construction de l'application iOS, car cette dll entre en conflit avec la façade de référence de l'application iOS. System.Reflection.Emit :

CSC : erreur CS1703 : Plusieurs assemblages avec une identité équivalente ont été importés : ' C:\Users\ndesl.nuget\packages\system.reflection.emit\4.3.0\ref\netstandard1.1\System.Reflection.Emit.dll et C:\Program Fichiers (x86) \Microsoft Visual Studio \2017\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0\Facades\System.Reflection.Emit.dll '. Supprimez une des références en double.

Quelqu'un sait-il comment régler ce problème ? Ces assemblages ne devraient-ils pas être reconnus comme deux versions du même assemblage ?

Tenter de spécifier une redirection de liaison dans app.config n'aide pas. J'utilise les dernières versions de Xamarin et VS2017.

Un projet minimal présentant le problème peut être trouvé ici : https://github.com/nicodeslandes/ReflectionEmitBuildIssue

3voto

desmondgc Points 346

Convertissez votre projet iOS pour utiliser PackageReference dans le fichier csproj au lieu de packages.config. Voir Problèmes avec .NET Standard 2.0 avec .NET Framework et NuGet sur dotnet/announcements GitHub et Utilisation de Xamarin Forms avec .NET Standard - Édition VS 2017 pour plus d'informations.

3voto

Subhan Ali Points 166

Note : J'ai rencontré le même problème sur la version MAC de Visual Studio mais j'espère que cela fonctionnera pour vous aussi.

Solution : Après avoir passé quelques heures, j'ai trouvé une solution de contournement. aquí en réponse no. 2.

Il suffit de supprimer System.Reflection.Emit.dll dans le chemin suivant :

C:\Program Fichiers (x86) \Microsoft Visual Studio \Preview\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0\Facades\System.Reflection.Emit.dll

1voto

π-e Points 23

Je vais juste ajouter ma réponse à la liste. Ce qui a résolu le problème pour moi a été de supprimer le chemin d'accès dans le fichier csproj. Une fois que je l'ai fait, tout s'est construit et a fonctionné correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X