Android 用 .NET 警告 XA4214
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`.
異なるアセンブリの 2 つ以上の C# 型がJava.Lang.Object
から継承され、同じ完全修飾名を共有する場合、その名前は常に、Android リソース ファイルで使用する場合、その型の 1 つのみを参照します。
この警告を解決する一般的な方法は、各完全修飾名が 1 つのアセンブリにのみ存在するように型の名前を変更することです。
もう 1 つのオプションは、競合するマネージド型に [Register]
属性を追加して、それぞれが一意の Java 型名を持つようにすることです。
3 番目のオプションは、Android リソース ファイル内のアセンブリ名で型名を修飾することです。 たとえば、単なるLibrary1.Class1
ではなく、アセンブリ修飾名Library1.Class1, Library
を使用します。 これは、XML スキーマが XML 属性内の型名を許可する場所でのみ機能します。 1 つの例として、fragment
要素のclass
属性があります。
マネージド型の名前を変更するのではなく、[Register]
属性またはアセンブリ修飾名を使用する場合は、msBuild コマンド ラインに /warnasmessage:XA4214
スイッチを追加するか、.csproj ファイルの $(MSBuildWarningsAsMessages)
プロパティにXA4214
を追加して警告を非表示にすることができます。
<PropertyGroup>
<MSBuildWarningsAsMessages>XA4214</MSBuildWarningsAsMessages>
</PropertyGroup>