PCL在MonoTouch和MonoDroid中运行良好.
但是,有时候,当我使用变量引用PCL中的Type,然后我尝试在MonoX客户端中使用相同的引用时,编译器会失败并显示如下消息:
"System.Collections.Specialized.INotifyCollectionChanged"类型在未引用的程序集中定义.您必须添加对程序集'System.Windows,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes'的引用.
这里的问题是在MonoDroid中,我的System.Collections.Specialized.INotifyCollectionChangedPCL是在一个垫片类型转发DLL中提供的 - 比如https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/System.Windows - 很明显,DLL无法使用Microsoft的签名私钥.
更多信息:
任何人都可以建议任何解决方法吗?例如,有没有办法关闭强大的装配命名保护?
我认为如果PCL要在微软出货的.Net实现之外真正移植,那么这是必要的吗?
我在OS X上的Xamarin Studio中使用了可移植类库(PCL).我有两个PCL库,它们面向.NET 4.5,Windows Phone 8,Windows Store应用程序,Xamarin.iOS和Xamarin.Android.我在iOS,Android和Unit测试项目中引用了这两个库.我在3个区域收到以下错误:
"System.Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
代码很简单:
MyClass myClass = new MyClass();
Run Code Online (Sandbox Code Playgroud)
在引用PCL的每个项目中都会发生一次错误.他们都不是同一个班级.我是PCL的新手.我已经尝试删除Windows Phone 8(因为我最后一分钟添加了它)但问题并没有消失.任何帮助都会被指定!
谢谢!
更新:
所以这发生在类中声明的第一个字段(其中类来自PCL项目).
int a = 0;
MyPCLClass _myPCLClass = new MyPCLClass(); //This is where the error appears
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的方面是有超过50个类使用这些类,错误只出现在三个类中.
xamarin.ios xamarin.android portable-class-library .net-4.5 xamarin-studio