使用Mono进行C#开发的可行性

时间:2009-04-28 09:54:35

标签: c# linux ubuntu-9.04

最近,我在Ubuntu linux中遇到了Mono和MonoDevelop软件包。他们声称拥有符合CLI的.NET运行时。在自己安装软件包之前,我想知道以下内容:

  1. Mono有多强大?

  2. 我可以开发GUI应用程序吗? linux喜欢开发WinForm 适用于Windows的应用程序。

  3. MonoDevelop IDE是否与Visual Studio IDE兼容。我可以将VS 2008解决方案导入MonoDevelop并开始工作吗?

  4. 它是否支持.NET 2.0及更高版本?

  5. 编辑:再添一个疑问

    有没有办法在Linux中运行.NET exe(winform应用程序)而不在linux中构建cod e?事实上,我没有我之前开发的一些小实用程序的代码,并希望在linux中运行它们。

7 个答案:

答案 0 :(得分:6)

  1. (奇怪的是,markdown用一个开始枚举,即使我从2开始......)

  2. 是的,你可以,但你受限于第三方组件,因为内部实现不同,上次我检查(不久前),Mono WinForms实现使我的测试应用程序看起来相当奇怪(所有者绘制的列表视图)。虽然Mono声称它现在完全与WinForms-2.0兼容,但并不是真的推荐。

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

  4. 是的,就CLR而言,确实如此。正如Marc Gravell已经写过的那样,Windows Foundation库和其他一些库(例如System.Management)一样缺失。但事情应该最重要,包括ASP.NET 2.0。 Mono's application portability guidelines对此非常了解。

答案 1 :(得分:2)

1:实际上相当不错。并非所有的完整框架都存在,所以如果您编写的代码应该基于MS .NET和单声道构建,那么您需要在两个平台上尽早构建和测试

4:是的 - 虽然像WPF / WCF / WF(3.0)这样的东西丢失或缩小了

我对开发环境了解不多,因为我使用VSTS(在Windows上),只使用NANT脚本在单声道上进行构建...

答案 2 :(得分:2)

  1. 定义“强大”。
  2. Mono有一个WinForms实现,允许某种程度的源兼容性。但是,根据您的需要,您可能希望将一个Mono绑定用于Linux本机框架,例如Gtk#Qyoto
  3. 不知道。
  4. 取决于您的.NET的哪些部分。 C#这种语言似乎非常流行,如前所述,越接近企业功能,事情就会变得越来越模糊。
  5. 总而言之,如果您将Mono用作单独的目标平台,那么您可能会获得良好的结果。如果您想要一个不需要代码更改的.NET兼容性层,那就不那么了。

答案 3 :(得分:1)

  1. 非常强大。核心实施中没有重大错误。这不是一个科学项目。缺点主要在于您所期望的最新API(微软本身具有先发优势)。

  2. 是。我们刚刚完成了一个项目,其中大部分GUI代码是在Windows上的WinForms中开发的。我能够使用Ubuntu进行处理而不会出现严重的问题。也就是说,这是API中最难的部分之一,但仍然存在问题。有关详细信息,请参阅http://mono-project.com/WinForms

  3. 不知道,因为我不使用它。
  4. 是的,尽管如此,运行时可能会遗漏一些API。
  5. 注意,我使用的是Ubuntu Hardy(8.04)。

答案 4 :(得分:1)

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

  2. 当您说“开发用于Linux的GUI应用程序,如开发适用于Windows的WinForm应用程序”时,我知道您正在询问一个可以让您快速创建UI的可视化设计器。对的,这是可能的。 MonoDevelop拥有Stetic - Gtk#的内置视觉设计师。还有QyotoDevelop可以在MonoDevelop中启用QT支持。

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

  4. 目前Mono支持C#3.0,其中包含一些已经实现的内容以及很多内容。

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

答案 5 :(得分:0)

  1. Mono非常强大,有时甚至比微软的实施更强大。 link text
  2. Yes you can.支持Winforms 2.0
  3. 我相信。
  4. 是的。 C# 3 is supported只需看看winforms和asp.net实现,看看每个项目支持多少。看http://mono-project.com

答案 6 :(得分:0)

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

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

如果您刚开始使用,请坚持使用WinForms,同时熟悉Mono / Linux。但是在某些时候你可能想要调查GTK。