2012-04-07 103 views
5

我正在使用大量反射的iOS/MonoTouch项目。一切都很正常,但是当我编译调试| iPhone版本我得到的错误:MonoTouch错误MT2002:无法解析参考

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

有趣的是,发行| iPhone构建工作正常。

什么可能是错的?

回答

7

==运算符过载PropertyInfo(内部命名为op_Equality)可用于.NET 4.0及更高版本。 IOW它在MonoTouch(这是Silverlight 2.1的配置文件的超集)附带的mscorlib.dll版本中不可用。

发生了什么事可能是一个不同版本的预编译的程序集的构建调试(与发布)时使用。此版本使用的方法在MonoTouch中不可用,这会在链接或AOT应用程序时导致错误。

解决方案:使用MonoTouch附带的mscorlib.dll版本重新编译此程序集。这将避免参考op_Equality(并使用Equals)并且构建应该正常工作。

+1

感谢您的快速响应!究竟发生了什么:我在PC上使用Visual Studio进行编辑,甚至可以编译。当然,我必须在Mac上重建才能运行。我想在PC上的构建拉错了mscorlib。删除所有项目中的obj和bin文件夹后,在Mac上重新编译工作良好。 – 2012-04-09 20:45:02

+0

每当我遇到此问题时,我都会回到这个答案。我只是忘记解决方案。 :-) – 2013-07-09 12:14:26

+1

@DanAbramov即将成为历史事实/常见问题;-) – poupou 2013-07-09 12:35:55