Dela via


.NET för Android-varning XA4214

Exempelmeddelanden

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

Problematik

Om två eller flera C#-typer från olika sammansättningar ärver från Java.Lang.Object och delar samma fullständigt kvalificerade namn refererar det namnet alltid till bara en av typerna när det används i Android-resursfiler.

Lösning

Det vanligaste sättet att lösa den här varningen är att byta namn på typerna så att varje fullständigt kvalificerat namn bara finns i en sammansättning.

Ett annat alternativ är att lägga till [Register] attribut för de hanterade typer som står i konflikt så att var och en har ett unikt Java-typnamn.

Ett tredje alternativ är att kvalificera typnamnen med sammansättningsnamnet i Android-resursfilerna. Använd till exempel det sammansättningskvalificerade namnet Library1.Class1, Library i stället för bara Library1.Class1. Detta fungerar bara på platser där XML-schemat tillåter ett typnamn i ett XML-attribut. Ett exempel är attributet class för fragment element.

Om du väljer att använda [Register] attribut eller sammansättningskvalificerade namn i stället för att byta namn på de hanterade typerna kan du dölja varningarna antingen genom att lägga till växeln /warnasmessage:XA4214 till MSBuild-kommandoraden eller genom att lägga XA4214 till i $(MSBuildWarningsAsMessages) egenskapen i .csproj-filen:

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