类型 'System.ComponentModel.INotifyPropertyChanged' 在未被引用的程序集中定义

The type 'System.ComponentModel.INotifyPropertyChanged' is defined in an assembly that is not referenced

同一文件出现以下错误:LocationToLatLngValueConverter.cs

参考: https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-41-Maps

The type `System.ComponentModel.INotifyPropertyChanged` is defined in an assembly that is not referenced. You must add a reference to assembly `System.ObjectModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a`.

`D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

`Map.Droid.Views.LocationToLatLngValueConverter.Convert(Map.Core.ViewModels.Location, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override`

`D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

`Map.Droid.Views.LocationToLatLngValueConverter.ConvertBack(Android.Gms.Maps.Model.LatLng, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override    D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

根据演示,提供了应用程序的所有内容。

我仍然无法摆脱这些问题。

我查看了代码,实际上那个转换器没有任何问题。它失败的原因是您对 System.ObjectModel 和 System.Runtime 的引用指向了 类 的错误版本。你可以看到,因为在 Xamarin studio 中他们的名字后面有一个 "red X"。

还引用了非常具体的 .net 版本和其他包,不建议将其用于正常用途。

我刚刚在引用 PCL 的单元测试项目中遇到了这个错误。 它抱怨我没有引用 System.Object。问题似乎是由于我引用了 System.Runtime - Resharper 似乎想添加它。

删除对 System.Runtime 的引用解决了我的问题。

我设法解决了这个问题,方法是删除文件开头的所有 using 语句,然后将它们一一添加回来。

Resharper 最终建议我参考 System.ObjectModel