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

时间:2014-03-17 18:49:59

标签: c# mono

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

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

  2. 是否有任何互联网链接的东西/功能提供了一个适用于C#.NET的列表不能在C#Mono上工作,反之亦然?谷歌本身并没有找到任何东西。

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

2 个答案:

答案 0 :(得分:6)

  1. 只要它没有Mono中不存在的依赖关系,就可以通过Mono读取CLR程序集(即使是在注释中提到的DLL形式),因为......
  2. ...并不是编译.NET的每一段代码都会为Mono编译,因为.NET中有很多特定于Windows的东西(不是C#的严格部分)没有实现(WPF,ASP。 NET异步堆栈)或者在Linux中根本没有意义(我认为COM就是这样一个例子)。
  3. 幸运的是,有a list of what .NET features are implemented in Mono。更幸运的是,似乎他们有an app that tells you a priori whether your code makes use of anything not implemented in Mono(但我从未尝试过)。

答案 1 :(得分:4)

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

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

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