用Mono开发C#的可行性

最近,我在Ubuntu linux中遇到了Mono和MonoDevelop包。 他们声称有一个按照CLI的.NET运行时。 在自己安装包之前,我想知道以下几点:

  1. 单声道有多强大?

  2. 我可以像开发Windows的WinForm应用程序一样开发Linux的GUI应用程序。

  3. MonoDevelop IDE与Visual Studio IDE兼容。 我可以将VS 2008解决scheme导入MonoDevelop并工作吗?

  4. 它支持.NET 2.0及以上版本吗?

编辑:添加一个疑问

有什么办法可以在Linux下运行.NET EXE(winform应用程序),而无需在linux中创build代码? 事实上,我没有我以前开发的一些小工具的代码,并希望在Linux中运行它们。

Solutions Collecting From Web of "用Mono开发C#的可行性"

  1. (奇怪的是,降价开始与一个枚举,即使我从2开始…)

  2. 是的,你可以,但是你被第三方组件限制了,因为内部实现是不同的,而且上次我检查(不是很久以前),Mono WinForms的实现使得我的测试应用看起来很奇怪(自绘列表显示)。 虽然Mono声称它现在完全是WinForms-2.0兼容,但并不真正推荐它。

  3. MonoDevelop是/是SharpDevelop分支,后者有解决方案支持。 我不知道MonoDevelop是否有。 但很酷的是,你可以用Visual Studio进行开发,并在Mono上运行你编译的应用程序。 顺便说一句,单声道也可用于Windows。

  4. 是的,就CLR而言。 正如Marc Gravell已经写过的那样,缺少Windows Foundation库,还有一些(如System.Management)。 但事情应该主要工作,包括ASP.NET 2.0。 Mono的应用程序可移植性准则是一个很好的阅读。

1:相当不错,实际上。 并不是所有的完整框架都在那里,所以如果你正在编写的应该建立在MS .NET和mono上的代码,你需要在两个平台上尽早构建和测试

4:是的 – 虽然像WPF / WCF / WF(3.0)的东西丢失或减少

我不太了解开发环境,因为我使用VSTS(在Windows上),只需使用NANT脚本来建立单声道…

  1. 定义“强大”。
  2. 单声道有一个WinForms实现,以允许一定程度的源代码兼容性。 但是,根据您的需要,您可能希望将其中一个Mono绑定用于Linux本机框架,如Gtk#或Qyoto
  3. 不知道。
  4. 取决于你的.NET的哪些部分。 C#语言似乎是相当流行的,事情越来越模糊,你已经提到的企业特性越接近。

总结一下,如果你将Mono作为一个单独的目标平台,你可能会有很好的结果。 如果你想要一个不需要代码更改的.NET兼容层,那么就不那么重要了。

  1. 很强大。 核心实现中没有重大错误。 这不是一个科学项目。 这些缺陷大部分是你期望的,最新的API(微软本质上有一个先发优势)。

  2. 是。 我们刚刚完成了一个项目,其中大部分GUI代码是在Windows上的WinForms中开发的。 我可以使用Ubuntu来解决这个问题,而不会让人头疼。 这就是说,这是API中最难的部分之一,仍然存在问题。 有关详细信息,请参阅http://mono-project.com/WinForms

  3. 不知道,因为我不使用它。
  4. 是的,尽管如此,在运行时可能会有一些缺失的API。

请注意,我使用Ubuntu Hardy(8.04)。

  1. 单声道威力强大。 它拥有非常强大的开源骨架的所有.Net肌肉。

  2. 当你说“开发Linux的GUI应用程序,比如为Windows开发WinForm应用程序”时,我明白你在问一个可以让你快速创建UI的可视化设计器。 对的,这是可能的。 MonoDevelop有Stetic–一个内置的Gtk#视觉设计器。 还有QyotoDevelop可以在MonoDevelop中启用QT支持。

  3. 是的,MonoDevelop本身支持VS项目/解决方案文件格式。 您可以使用相同的代码库在Windows上使用VS编译您的应用程序,并在Linux上使用Mono获得MD。

  4. 目前,Mono支持C#3.0,其中一些内容已经超越了已经实现的内容,还有很多正在实施中。

  5. 是的,在许多情况下,可以在Mono中运行一个.Net编译的应用程序,但是MonoDevelop对VS解决方案的支持并不重要。 它需要按F7重建整个项目,所以这个努力是微不足道的。 检查您的应用程序是否可以在Mono中运行的最佳工具是MoMA 。

  1. 单声道是非常强大的,有时甚至比微软的实施更强大。 链接文本
  2. 是的你可以。 Winforms 2.0支持
  3. 我相信是这样。
  4. 是的,它确实。 支持C#3 ,只要看看winforms和asp.net的实现,看看每个项目支持多少。 看看http://mono-project.com

我在单声道中使用WinForms。 2.x版本非常好。

我在windows上的visual-studio中开发窗体,并在Linux中运行它们,零代码更改。 是的,表单看起来与XP有点不同,但是在GNOME中,以XP为主题的GUI看起来有些奇怪。

如果你刚刚开始,坚持与WinForms,而你适应Mono / Linux的。 不过在某些时候,您可能需要调查GTK。