2012-04-07 104 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