Предупреждение .NET для Android 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`.
Если два или более типов C# из разных сборок наследуются от Java.Lang.Object
одного и того же полного имени, то это имя всегда будет ссылаться только на один из типов при использовании в файлах ресурсов Android.
Типичным способом устранения этого предупреждения является переименование типов, чтобы каждое полное имя существовало только в одной сборке.
Другой вариант — добавить [Register]
атрибуты в конфликтующие управляемые типы, чтобы каждый из них имеет уникальное имя типа Java.
Третий вариант — указать имена типов с именем сборки в файлах ресурсов Android. Например, используйте полное имя Library1.Class1, Library
сборки, а не просто Library1.Class1
. Это работает только в тех местах, где xml-схема разрешает имя типа в атрибуте XML. Одним из примеров class
является атрибут элементов fragment
.
Если вы решили использовать [Register]
атрибуты или имена с указанием сборки, а не переименовать управляемые типы, можно скрыть предупреждения либо путем добавления /warnasmessage:XA4214
переключателя в командную строку MSBuild, либо путем добавления XA4214
$(MSBuildWarningsAsMessages)
в свойство в CSPROJ-файле:
<PropertyGroup>
<MSBuildWarningsAsMessages>XA4214</MSBuildWarningsAsMessages>
</PropertyGroup>