Lire en anglais

Partager via


Avertissement .NET pour Android XA4214

Exemples de messages

warning XA4214: The managed type `Library1.Class1` exists in multiple assemblies: Library1, Library2. Please refactor the managed type names in these assemblies so that they are not identical.
warning XA4214: References to the type `Library1.Class1` will refer to `Library1.Class1, Library1`.

Problème

Si deux types C# de différents assemblys héritent et partagent Java.Lang.Object le même nom complet, ce nom fait toujours référence à l’un des types utilisés dans les fichiers de ressources Android.

Solution

La façon classique de résoudre cet avertissement consiste à renommer les types afin que chaque nom complet existe uniquement dans un seul assembly.

Une autre option consiste à ajouter [Register] des attributs sur les types managés en conflit afin que chacun d’eux possède un nom de type Java unique.

Une troisième option consiste à qualifier les noms de type avec le nom de l’assembly dans les fichiers de ressources Android. Par exemple, utilisez le nom Library1.Class1, Library qualifié par l’assembly plutôt que simplement Library1.Class1. Cela fonctionne uniquement dans les emplacements où le schéma XML autorise un nom de type dans un attribut XML. Un exemple est l’attribut class sur fragment les éléments.

Si vous choisissez d’utiliser [Register] des attributs ou des noms qualifiés d’assembly plutôt que de renommer les types managés, vous pouvez masquer les avertissements en ajoutant le /warnasmessage:XA4214 commutateur à la ligne de commande MSBuild ou en ajoutant XA4214 à la $(MSBuildWarningsAsMessages) propriété dans votre fichier .csproj :

<PropertyGroup>
    <MSBuildWarningsAsMessages>XA4214</MSBuildWarningsAsMessages>
</PropertyGroup>