Ler em inglês

Compartilhar via


.NET para Android aviso XA4214

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

Problema

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 recurso 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 nos 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 recurso do Android. Por exemplo, use o nome Library1.Class1, Library qualificado pelo assembly em vez de apenas Library1.Class1. Isso só funciona em locais onde 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 para assembly em vez de renomear os tipos gerenciados, poderá ocultar os avisos adicionando a /warnasmessage:XA4214 opção à linha de comando do MSBuild ou adicionando XA4214 à $(MSBuildWarningsAsMessages) propriedade em seu arquivo .csproj:

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