3

我目前正在构建一个 MonoTouch 应用程序,并希望在它与任何其他未来平台之间共享尽可能多的代码。我认为最好的方法是将 PCL 用于公共代码。

问题是,当我尝试在我的 PCL 库中引用 System.Collection.Generic.List<T> 时,MOnoDevelop 以红色突出显示列表文本(好像说找不到引用),但是当我构建项目时,编译器没有问题,正常编译...

例如,我可以在我的 PCL 中有以下代码

MonoDevelop 突出显示不正确的解决错误

并且 MD 会很好地编译这个,这个方法可以从我的 MT 应用程序中使用。

然而,使用它令人沮丧,因为它一直误导我认为应该编译的代码不会,而且我错过了 IntelliSense 的很多好处。

我已经尝试过列出的关于切换编译器的解决方案,但这并没有帮助。希望有人对如何解决这个问题提出建议?

出于兴趣考虑,这是 intellisense 为我提供的 System.Collections.Generic 命名空间(该列表中有一项不在视图中 - Stack<T>)

带有 PCL 项目的 MonoDevelop 中 System.Collections.Generic 的 IntelliSense 列表

还应该提到我正在使用 MonoDevelop v3.0.5、Mono v2.10.9、MT v6.0.6

4

1 回答 1

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 程序集。

于 2012-12-06T23:09:43.977 回答