MonoTouch与Portable Library Project无法构建

Bar*_*jen 5 mono monodevelop xamarin.ios portable-class-library

在我用MonoDevelop(3.0.3.5)创建的解决方案中,我有3个项目:

  1. 带UI的MonoTouch项目,
  2. 具有iOS特定代码的MonoTouch Library项目,
  3. 具有域模型的可移植库项目.

Portable Library项目不会编译,并在MonoDevelop中的引用(System,System.Core,System.Xml)上显示警告符号.当我展开程序集引用时,显示以下错误消息:

Assembly not available in .NETPortable 4.0 Profile1 Profile (in Mono 2.10.9)

此论坛帖子中报告了同样的问题.

有没有人有同样的问题,能够解决它?

更新

可以在GitHub上找到带有构建错误的演示解决方案(bgever/plp-build-error).

我发现尽管显示了错误消息,但基本代码可以编译并按预期工作.

但是,构建错误的两种变体阻止了演示解决方案的编译:

public T Get<T> (Expression<Func<T, bool>> predicate) where T : new() { 
Run Code Online (Sandbox Code Playgroud)

使用泛型类型System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,TResult>' requires10'类型参数(CS0305)

所以似乎Func<T, TResult>不支持2参数泛型重载?

public void RunInTransaction (Action action) {
Run Code Online (Sandbox Code Playgroud)

使用泛型类型System.Action<T>' requires1'类型参数(CS0305)

那么似乎Action无法找到非通用版本?

Bar*_*jen 1

通过附加的错误消息,我发现了以下问题:MonoDevelop: is it possible to switch PCL's compiler? 根据 @mhutch 提供的答案,可以强制执行 MonoTouch 编译器,然后能够编译代码。

然而,这只是一种解决方法,因此,如果能在 Mono、MonoDevelop 和 MonoTouch 中看到适当的可移植类库支持,那就太好了。

如果您也需要适当的可移植类库支持:请在 Xamarin 的 UserVoice 上投票支持此功能