使用mono项目在Linux上运行c#代码的优点和局限性是什么?

如果有人使用单声道项目的优点和局限性的解决scheme在Linux上运行C#代码,请告诉我你的想法…

有一个巨大的优势 – 它的作品。 您可以使用C#,开发并在Linux(以及其他平台,包括Windows)上运行。

缺点是事情并不总是像在MS的.NET实现中一样工作,并且有一些功能根本没有实现,比如WPF。

优点

  • 投资 – 当您选择正确的软件时,您不必在Linux上运行Mono时支付软件许可证(这并不意味着它是免费的 – 如果您的时间没有价值,Linux将是免费的)。
  • 没有供应商锁定 – 与MS解决方案相比,您可以在Linux上为其他软件(例如数据库或Web服务器)提供更多的选择。
  • 单声道特定库(例如Mono.Simd或REPL)。
  • 开源(您或其他人可以自行修复错误/提供补丁/改进代码)。

限制

  • 与MS.NET框架不兼容。
  • 一般来说,你可能会花更多的时间处理某些事情(例如处理不兼容或学习Linux管理等)。
  • 在新版本的.NET框架发布的一段时间内,Mono并没有及时了解新的API和功能。

我用C#开发了几个应用程序,并试图通过Mono在Linux上运行一些应用程序。 让控制台应用程序运行非常简单。 大多数情况下,在Mono下运行这些类型的应用程序并不需要进行代码更改。 但是,GUI应用程序总是比较棘手。 你应该知道的第一件事是你的用户界面不会融入用户的主题。 假设您使用Microsoft的System.Windows.Forms,应用程序将总是看起来像Windows 98应用程序。

但是,如果您计划只在Linux上编写和运行该应用程序,则可以使用Mono的Gtk#来构建用户界面。 这与Linux桌面集成比System.Windows.Forms好得多。 这个页面给出了不同的GUI工具包,其优点和缺点的一个很好的概述。

如果你坚持使用GUI工具包的System.Windows.Forms来在Windows和Linux上运行你的应用程序,请记住,尽管Mono支持C#4.0,但最好还是限制在C#2.0之下3.0及以上版本的功能未实现,或在Linux上无法正常运行。