我正在开发一个使用大量反射的 iOS/MonoTouch 项目。一切都很好,但是当我编译Debug|iPhone版本时,我得到了错误:
错误 MT2002:无法解析参考:System.Boolean System.Reflection.PropertyInfo::op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)
有趣的是 Release|iPhone 版本运行良好。
有什么问题?
我正在开发一个使用大量反射的 iOS/MonoTouch 项目。一切都很好,但是当我编译Debug|iPhone版本时,我得到了错误:
错误 MT2002:无法解析参考:System.Boolean System.Reflection.PropertyInfo::op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)
有趣的是 Release|iPhone 版本运行良好。
有什么问题?
内部命名为的==
运算符重载可在 .NET 4.0 及更高版本上使用。IOW 它在MonoTouch 附带的版本中不可用(它是 Silverlight 2.1 配置文件的超集)。PropertyInfo
op_Equality
mscorlib.dll
发生的事情可能是构建Debug时使用的预编译程序集的不同版本(相对于Release)。此版本使用 MonoTouch 中不可用的方法,这将导致在链接或 AOT-ing 应用程序时出错。
解决方案:使用 MonoTouch 附带的 mscorlib.dll 版本重新编译此程序集。这将避免对op_Equality
(和使用Equals
)的引用,并且构建应该可以正常工作。