Android용 .NET 경고 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]
선택하는 경우 MSBuild 명령줄에 스위치를 추가 /warnasmessage:XA4214
하거나 .csproj 파일의 속성에 추가하여 XA4214
$(MSBuildWarningsAsMessages)
경고를 숨길 수 있습니다.
<PropertyGroup>
<MSBuildWarningsAsMessages>XA4214</MSBuildWarningsAsMessages>
</PropertyGroup>