C#.NET与C#Mono之间的库兼容性

我想试用C#进行通用编程(而不是web开发)。 我在Windows环境中编程,但我想避免专门针对Windows(.NET)进行编码,因为我希望保持选项打开以便将来迁移到Linux。

  1. 在C#.NET中是否有任何特定的库在C#Mono中无法用于通用编程工作(对Windows Forms,Silverlight和类似的东西不感兴趣)?

  2. 是否有任何互联网链接的东西/function,提供一个适用于C#.NET的列表不适用于C#Mono,反之亦然? 我在谷歌本身并没有发现任何东西。

注意:我会对具体的答案感兴趣,而不是更好或更差的意见(谢谢!)

  1. 只要没有Mono中不存在的依赖关系,就可以通过Mono读取CLR程序集(甚至以DLL的forms,如注释中所述),因为……
  2. …并不是编译.NET的每一段代码都会为Mono编译,因为.NET中有很多特定于Windows的东西(不是C#的严格部分)没有实现(WPF,ASP.NET async stack)或者在Linux中根本没有意义(我认为COM是一个这样的例子)。

幸运的是,有一个列表显示了在Mono中实现的.NETfunction 。 更幸运的是,似乎他们有一个应用程序可以告诉您先验是否您的代码使用了Mono中未实现的任何内容 (但我从未尝试过)。

如果你安装了xamarin(你需要Pro或更大版本以便你有VS集成)你可以创建针对xamarin(基于单声道)的可移植类库,visual studio将允许你只使用与mono兼容的类。

http://docs.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/

显然你也可以使用xamarin工作室创建一个PCL,并有一个免费版本。