英語で読む

次の方法で共有


Android 用 .NET 警告 XA4214

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

問題点

異なるアセンブリの 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>