2012-04-07 12 views
5

Estoy trabajando en un proyecto de iOS/MonoTouch que utiliza mucha reflexión. Todo funciona muy bien, pero cuando compilo el depuración | versión para iPhone me sale el error:Error de MonoTouch MT2002: No se puede resolver la referencia

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

Lo curioso es que la versión | iPhone acumulación funciona bien.

¿Qué puede estar mal?

Respuesta

7

La sobrecarga del operador == para PropertyInfo, que se llama internamente op_Equality, está disponible en .NET 4.0 y posterior. IOW no está disponible en la versión de mscorlib.dll que se envía con MonoTouch (que es un superconjunto del perfil de Silverlight, 2.1).

Lo que sucede es probable que una versión diferente de un conjunto de pre-compilados que se utiliza en la construcción de depuración (frente lanzamiento). Esta versión usa métodos que no están disponibles en MonoTouch y esto dará como resultado errores mientras enlaza o aplica su aplicación.

Solución: vuelva a compilar este ensamblaje con la versión de mscorlib.dll que se envía con MonoTouch. Esto evitará la referencia a op_Equality (y usa Equals) y la compilación debería funcionar bien.

+1

¡Gracias por su rápida respuesta! Lo que realmente sucedió: uso Visual Studio en mi PC para editarlo e incluso puedo compilarlo. Por supuesto, tengo que reconstruir en la Mac para poder ejecutar. Supongo que la compilación en la PC trajo el mscorlib incorrecto. Después de eliminar las carpetas obj y bin en todos los proyectos, recompilar en la Mac funcionó bien. –

+0

Vuelvo a esta respuesta cada vez que tengo este problema. Solo me olvido de la solución. :-) –

+1

@DanAbramov que debería convertirse en un hecho histórico/Preguntas frecuentes pronto ;-) – poupou

Cuestiones relacionadas