相关疑难解决方法(0)

MonoTouch/MonoDroid中的可移植类库强大的程序集引用问题

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的签名私钥.

更多信息:

  • 这在ICommand和INotifyCollectionChanged等接口中很常见
  • 它似乎只出现在.exe项目中(库以某种方式工作正常)
  • 我主要在VS2010和VS2012中进行测试/构建
  • 更多内容:https://github.com/slodge/MvvmCross/issues/41

任何人都可以建议任何解决方法吗?例如,有没有办法关闭强大的装配命名保护?

我认为如果PCL要在微软出货的.Net实现之外真正移植,那么这是必要的吗?

xamarin.ios xamarin.android portable-class-library

7
推荐指数
1
解决办法
2394
查看次数

可移植类库System.Object错误

我在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

6
推荐指数
1
解决办法
2908
查看次数