2012-04-07 2 views
5

많은 리플렉션을 사용하는 iOS/MonoTouch 프로젝트에서 작업 중입니다. 모든 것이 잘 작동하지만, 나는 디버그 컴파일 할 때 | 아이폰 버전을 나는 오류 얻을 : | 아이폰 빌드가 잘 작동MonoTouch 오류 MT2002 : 참조를 확인할 수 없습니다.

error MT2002: Can not resolve reference: System.Boolean System.Reflection.PropertyInfo::op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)

재미있는 것은이 자료가입니다.

무엇이 잘못 될 수 있습니까?

답변

7

내부적으로 이름이 op_EqualityPropertyInfo에 대한 == 연산자 오버로드는 .NET 4.0 이상에서 사용할 수 있습니다. MonoTouch (Silverlight, 2.1, 프로필의 상위 집합)와 함께 제공되는 mscorlib.dll 버전에서는 사용할 수 없습니다. 무슨 일

가능성이 디버그 (대 릴리스를) 만들 때 사용되는 미리 컴파일 된 어셈블리의 다른 버전입니다. 이 버전은 MonoTouch에서 사용할 수없는 메서드를 사용하며 응용 프로그램을 연결하거나 응용 프로그램을 실행하는 동안 오류가 발생합니다.

솔루션 :이 어셈블리는 MonoTouch와 함께 제공되는 mscorlib.dll 버전으로 다시 컴파일하십시오. 이렇게하면 op_Equality (및 Equals) 참조를 피할 수 있으며 빌드가 정상적으로 작동합니다.

+1

빠른 응답을 보내 주셔서 감사합니다. 실제로 무슨 일이 일어 났습니까? 편집을 위해 PC에서 Visual Studio를 사용하고 빌드도 할 수 있습니다. 물론 Mac에서 다시 실행할 수 있어야합니다. PC에서 빌드가 잘못된 mscorlib을 가져온 것 같습니다. 모든 프로젝트에서 obj 및 bin 폴더를 삭제 한 후 Mac에서 다시 컴파일하면 문제가 없습니다. –

+0

나는이 문제가 생길 때마다이 대답으로 돌아 간다. 나는 그 해결책을 잊어 버리고있다. :-) –

+1

@DanAbramov는 역사적인 사실/곧 FAQ가되어야합니다 ;-) – poupou

관련 문제