我目前正在构建一个MonoTouch应用程序,并希望在它与任何其他未来平台之间共享尽可能多的代码。我认为最好的方法是使用PCL作为公共代码。
当我尝试引用System.Collection.Generic.List< T>时出现问题。在我的PCL库中,MOnoDevelop以红色突出显示List文本(好像说无法找到引用),但是当我构建项目时,编译器没有问题并正常构建它......
例如,我可以在我的PCL中使用以下代码
并且MD会很好地编译它,这个方法可以从我的MT应用程序中使用。
然而,这是令人沮丧的,因为它误导了我一直认为应该编译的代码不会,并且我错过了IntelliSense的许多好处。
我已尝试列出about switching the compiler列出的解决方案,但这没有帮助。希望有人就如何解决这个问题提出建议吗?
为了兴趣,这里是intellisense给我的System.Collections.Generic命名空间(该列表中有一个项目不在视图中 - Stack< T>)
还应该提一下,我使用的是MonoDevelop v3.0.5,Mono v2.10.9,MT v6.0.6
答案 0 :(得分:3)
MonoDevelop 3.x对可移植类库的支持是对Linux和Mac的攻击,因为在这些平台上,没有任何PCL程序集(Mono没有任何PCL程序集)。
当MonoDevelop在Mac或Linux上编译PCL项目时(真正的PCL程序集不可用),它使用被攻击的Microsoft.Portable.CSharp.targets文件来引用MonoTouch或Mono4Android程序集(如果有的话),否则它会掉落回到编译.NET 4.0程序集。
您看到的具体问题是由于MonoDevelop无法在您的系统上找到真正的PCL mscorlib / System / etc PCL程序集。