使用mono project在linux上运行c#代码有哪些优点和局限性?

使用mono project在linux上运行c#代码有哪些优点和局限性?,c#,linux,mono,C#,Linux,Mono,如果有人能够解决使用mono project在Linux上运行C#代码的优点和局限性,请告诉我你的想法…这是一个巨大的优点-它可以工作。您可以在Linux(和其他平台,包括Windows)上使用C#,开发和运行 缺点是,事情并不总是像MS的.NET实现那样运行,而且有些功能根本没有实现,比如WPF。我已经用C#开发了一些应用程序,并试图通过Mono在Linux上运行一些应用程序。让控制台应用程序以非常简单的方式运行。大多数情况下,在Mono下运行这些类型的应用程序不需要更改代码。然而,GUI应用

如果有人能够解决使用mono project在Linux上运行C#代码的优点和局限性,请告诉我你的想法…

这是一个巨大的优点-它可以工作。您可以在Linux(和其他平台,包括Windows)上使用C#,开发和运行


缺点是,事情并不总是像MS的.NET实现那样运行,而且有些功能根本没有实现,比如WPF。

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

但是,如果您计划只在Linux上编写和运行应用程序,那么您可以使用Mono的Gtk来构建用户界面。这与Linux桌面的集成比System.Windows.Forms好得多。给出了不同GUI工具包的详细介绍,它们的优点和缺点


如果您坚持使用System.Windows.Forms作为GUI工具包,以便在Windows和Linux上运行应用程序,请记住,即使Mono支持C#4.0,您最好将自己限制在C#2.0,由于3.0及更高版本的某些功能未在Linux上实现或无法正常工作。

优点

  • 投资——当你选择正确的软件时,在Linux上运行Mono时,你不必支付软件许可证费用(这并不意味着它是免费的——Linux只有在你的时间没有价值的情况下才是免费的)
  • 没有供应商锁定-与MS解决方案相比,Linux上的其他软件(例如DB或Web服务器)有更多的选择,MS解决方案最适合与其他MS产品配合使用
  • 特定于Mono的库(例如Mono.Simd或REPL)
  • 开源(您或其他人可以自己修复bug/提供补丁/改进代码)
限制

  • 与MS.NET framework不兼容
  • 一般来说,您可能会在某些事情上花费更多的时间(例如处理不兼容问题或学习Linux管理等等)
  • 当新版本的.NET framework发布时,Mono在一段时间内还没有更新新的API和功能

谢谢里德·科普西,你能再解释一下劣势吗?@Saravanan:你想知道什么?有些功能根本不存在。它也是一个完全不同的实现,所以有时候事情的工作方式不一样(尽管这种情况很少见)。不过,在大多数情况下,“它只是工作”而且很好(只要你不使用任何调用本机代码的东西)。另一个优势是,你可以使用Mono框架开发在windows、mac和linux上运行的应用程序。由于它使用VisualStudio进行开发,我相信您也可以调试应用程序remotely@kurtnelle:True-如果您购买了Visual Studio的Mono产品:好的,我明白了。我开发了基于C#windows窗体(桌面)的应用程序。这在linux上运行良好吗?为什么坚持使用C#2?多年来,对C#3的支持一直很稳固,C#4和核心.NET4API已经完成。请注意,C#3.0是.NET 3.5的一部分-在3.0中添加到.NET的API可能没有得到很好的支持,但它们基本上是独立的,不需要使用3.5或4.0功能。+1关于非本机GUI的警告。最好的方法是不直接移植GUI,并尽可能地将应用程序逻辑与GUI分离。如果C#是您最熟悉的语言,或者如果您已经开始使用C#代码库,那么就使用它。否则,我推荐Python,它是一种易于使用的语言,有一个至少与C#一样好的标准库,并且允许在Windows或Linux上使用跨平台GUI程序,无需修改。我可以称之为Mono和FCL之间的部分兼容性