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

uda*_*day 4 c# mono

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

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

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

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

The*_*kis 6

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

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

  • 这不完全正确.使用.Net编译的AC#库可以在Mono上正常工作,只要它不使用任何特定于Windows的技术(例如WPF).您不需要重新编译DLL.这就是[OpenTK](http://www.opentk.com)的工作方式:单个.Net dll可以在.Net和Mono(Windows,Linux,Mac OS X)上运行,无需重新编译. (3认同)