Compartilhar via


Aviso XA4214 do .NET para Android

Mensagens de exemplo

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

Questão

Se dois ou mais tipos C# de assemblies diferentes herdarem Java.Lang.Object e compartilharem o mesmo nome totalmente qualificado, esse nome sempre se referirá a apenas um dos tipos quando usado em arquivos de recursos do Android.

Solução

A maneira típica de resolver esse aviso é renomear os tipos para que cada nome totalmente qualificado exista apenas em um assembly.

Outra opção é adicionar [Register] atributos aos tipos gerenciados conflitantes para que cada um tenha um nome de tipo Java exclusivo.

Uma terceira opção é qualificar os nomes de tipo com o nome do assembly nos arquivos de recursos do Android. Por exemplo, use o nome qualificado de assembly Library1.Class1, Library em vez de somente Library1.Class1. Isso só funciona em locais em que o esquema XML permite um nome de tipo dentro de um atributo XML. Um exemplo é o class atributo em fragment elementos.

Se você optar por usar [Register] atributos ou nomes qualificados do assembly em vez de renomear os tipos gerenciados, poderá ocultar os avisos adicionando o parâmetro /warnasmessage:XA4214 à linha de comando do MSBuild ou adicionando XA4214 à propriedade $(MSBuildWarningsAsMessages) em seu arquivo .csproj:

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