Auf Englisch lesen

Freigeben über


.NET für Android-Warnung XA4214

Beispielnachrichten

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`.

Abgang

Wenn zwei oder mehr C#-Typen aus unterschiedlichen Assemblys erben Java.Lang.Object und denselben vollqualifizierten Namen gemeinsam verwenden, verweist dieser Name immer auf einen der Typen, wenn er in Android-Ressourcendateien verwendet wird.

Lösung

Die typische Methode zum Beheben dieser Warnung besteht darin, die Typen umzubenennen, sodass jeder vollqualifizierte Name nur in einer Assembly vorhanden ist.

Eine weitere Option ist das Hinzufügen [Register] von Attributen zu den in Konflikt stehenden verwalteten Typen, sodass jeder über einen eindeutigen Java-Typnamen verfügt.

Eine dritte Option besteht darin, die Typnamen mit dem Assemblynamen in den Android-Ressourcendateien zu qualifizieren. Verwenden Sie beispielsweise den assemblyqualifizierten Namen Library1.Class1, Library statt nur Library1.Class1. Dies funktioniert nur an Stellen, an denen das XML-Schema einen Typnamen innerhalb eines XML-Attributs zulässt. Ein Beispiel ist das class Attribut für fragment Elemente.

Wenn Sie Attribute oder assemblyqualifizierte Namen verwenden[Register], anstatt die verwalteten Typen umzubenennen, können Sie die Warnungen ausblenden, indem Sie entweder die /warnasmessage:XA4214 Option zur Befehlszeile MSBuild hinzufügen oder der $(MSBuildWarningsAsMessages) Eigenschaft in der CSPROJ-Datei hinzufügenXA4214:

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