2012-04-07 30 views
5

Tôi đang làm việc trên dự án iOS/MonoTouch đang sử dụng nhiều phản ánh. Tất cả mọi thứ hoạt động tốt, nhưng khi tôi biên dịch Debug | iPhone phiên bản tôi nhận được lỗi:Lỗi monoTouch MT2002: Không thể giải quyết tham chiếu

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

Funny điều là Release | iPhone xây dựng hoạt động tốt.

Điều gì có thể sai?

Trả lời

7

Quá tải nhà điều hành == cho PropertyInfo, được đặt tên nội bộ op_Equality, có sẵn trên .NET 4.0 trở lên. IOW nó không có sẵn trong phiên bản mscorlib.dll mà tàu với MonoTouch (đó là một superset của Silverlight, 2.1, hồ sơ).

gì đang xảy ra có thể là một phiên bản khác của một hội đồng tiền biên dịch được sử dụng khi xây dựng gỡ lỗi (so với phát hành). Phiên bản này sử dụng các phương thức không có sẵn trong MonoTouch và điều này sẽ dẫn đến lỗi trong khi liên kết hoặc AOT-ing ứng dụng của bạn.

Giải pháp: biên dịch lại phiên bản này bằng phiên bản mscorlib.dll đi kèm với MonoTouch. Điều này sẽ tránh tham chiếu đến op_Equality (và sử dụng Equals) và bản dựng sẽ hoạt động tốt.

+1

Cảm ơn phản hồi nhanh của bạn! Điều gì thực sự đã xảy ra: Tôi sử dụng Visual Studio trên máy tính của tôi để chỉnh sửa và thậm chí tôi có thể xây dựng. Tất nhiên tôi phải xây dựng lại trên máy Mac để có thể chạy. Tôi đoán việc xây dựng trên máy tính đã kéo sai mscorlib. Sau khi xóa các thư mục obj và bin trong tất cả các dự án, biên dịch lại trên Mac đã hoạt động tốt. –

+0

Tôi quay lại câu trả lời này mỗi khi tôi gặp vấn đề này. Tôi cứ quên đi giải pháp. :-) –

+1

@DanAbramov sẽ sớm trở thành sự kiện lịch sử/Câu hỏi thường gặp ;-) – poupou

Các vấn đề liên quan