示例消息
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 添加到您的 .csproj 文件中的 $(MSBuildWarningsAsMessages) 属性,从而隐藏警告。
<PropertyGroup>
<MSBuildWarningsAsMessages>XA4214</MSBuildWarningsAsMessages>
</PropertyGroup>