MonoTouch与Portable Library Project无法构建

时间:2012-08-28 15:27:27

标签: mono xamarin.ios monodevelop portable-class-library

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

  1. 带UI的MonoTouch项目,
  2. 具有iOS特定代码的MonoTouch Library项目
  3. 带有域模型的可移植图书馆项目。
  4. Portable Library项目不会编译,并在MonoDevelop中的引用(System,System.Core,System.Xml)上显示警告符号。当我展开程序集引用时,会显示以下错误消息:

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

    this forum thread报告了同样的问题。

    有没有人遇到同样的问题并且能够解决它?

    更新

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

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

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

    public T Get<T> (Expression<Func<T, bool>> predicate) where T : new() { 
    
      

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

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

    public void RunInTransaction (Action action) {
    
      

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

    所以似乎无法找到Action的非通用版本?

2 个答案:

答案 0 :(得分:1)

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

然而,这只是一种解决方法,因此,仍然可以在Mono,MonoDevelop和MonoTouch中看到适当的可移植类库支持。

如果您还需要适当的便携式类库支持:vote for this feature on Xamarin's UserVoice

答案 1 :(得分:0)

我在PLP中的.Net引用也有类似的问题,我实际上做的是删除现有的引用并从安装.Net Framework的地方手动添加它们,重新启动MonoDevelop并且我已经启动了又跑了。