Linux上Mono的当前状态?

时间:2009-06-12 16:46:57

标签: .net linux mono

我是Windows平台上.NET Framework的长期用户,但我也在Linux上做了很多编程。我想利用Mono进行某些特定的项目,但是我最后一次尝试(也许是2年前?),Mono根本没有完成任务。同样,从他们的网站或谷歌搜索获得关于Mono状态的非常好的信息特别困难。

是否有任何Mono专家可以为曾经在Windows上使用.NET 3.0的人简化项目的当前状态?大概有多少基类库可用,以及WinForms有多少?

提前致谢!

6 个答案:

答案 0 :(得分:14)

高级状态:mono-project.com/Plans

API状态:go-mono.com/status

如果您想将现有应用迁移到Linux:MoMA

我也认为这是一个更好的主意......

  • 考虑一下你可能对Mono使用的某些用例...你当前的问题太笼统了
  • 在邮件列表上询问具体问题,因为许多活跃在那里的聪明且知识渊博的人可能不会阅读StackOverflow:mono-project.com/Mailing_Lists

我的短暂经历总结:

  • Asp.net 2.0完全实现,我可以让Asp.net MVC工作
  • 支持Windows窗体但永远不会是高质量的,因为它不是优先考虑的事情。节省您的痛苦,只需为您的Linux端口创建一个Gtk#接口
  • 实现了基本库,Linq DB几乎就在那里,但是你不会对Windows特定的API运气,比如WPF和WCF,尽管Silverlight是在Moonlight中实现的
  • Mono在最近需要强大脚本环境的游戏中取得了成功。查看使用Mono的公司:mono-project.com/Companies_Using_Mono

有关新闻和内容,请访问Miguel的博客tirania.org/blog/

答案 1 :(得分:4)

我认为,如果它可以支持像Unity这样的游戏创建引擎的开发,它将用于开发模拟人生3等等。此外,Mono团队在某些方面在他们自己的游戏中击败微软,创建类似静态链接器的东西,以便.NET代码可以在iPhone上本地运行,以及C#REPL控制台。

对于它的价值,我一直在ASP.NET方面玩它,虽然有一些颠簸,但它是一个非常积极的体验。我能够使用NHibernate和MySQL运行ASP.NET MVC应用程序。

答案 2 :(得分:4)

当前的单声道实现(2.4)在.NET 2.0编译方面(以及3.5中的一些库,如ASP.NET MVC或LINQ)非常好,但仍然远离通用的.NET 3.0 / 3.5 。如果您的应用程序是使用winforms设计的,并且在.NET 3.0 / 3.5中没有使用太多,那么您很有可能使用单声道。当然,.NET 3.5框架的某些部分可能永远不会得到支持,比如WPF。

单声道页面上有一个Migration Analyzer可以确定您的应用程序是否运行正常,或者不是单声道2.4。

答案 3 :(得分:3)

mono website表示支持以下C#3.0功能:

  • 匿名方法
  • 迭代
  • 部分课程
  • 泛型
  • Nullable Types
  • 朋友集会
  • 静态类
  • 协方差和逆变
  • 属性访问者辅助功能
  • 固定缓冲区
  • 外部装配别名
  • 命名空间别名限定符
  • 内联警告控制
  • 扩展方法
  • LINQ语法
  • 表达树
  • 自动属性
  • Lambda表达式
  • 匿名类型。

答案 4 :(得分:2)

根据我对Window Forms区域的经验,.NET 2.0部分似乎运行良好。软件越复杂,您将遇到的问题就越多。有些事情必须改变才能使事情发挥作用。路径分隔符之类的东西。此外,一些Win Forms控件的行为也不同,诸如事件触发顺序之类的小事情就会在你身上蔓延。你必须测试一切,你会发现问题,就像在Java中一样。你会发现Win / Mono和Linux / Mono的所有排列问题,Mono也有没有修复的错误,可能是一个显示停止。

您可以使用MOMMA工具查找已知问题,但它无法捕获所有内容。 http://www.mono-project.com/MoMA

调试问题很慢,并且设置调试环境很困难。

我,但我认为对于.NET 3.0来说还是太早了,除非你是为了好玩而做的。

答案 5 :(得分:2)

根据我的经验,像datagridview这样的特殊控件已经走了很长的路。他们到了那里,但他们还没完全到那里。

我使用OpenTK库开发了一个小型OpenGL应用程序。这个应用程序在Windows和Mono上运行时大多是相同的,但像datagridview这样的东西在实现中似乎有点随机。选择单声道的最新版本,你应该是很好的。

在我看来,差异现在很小,没有任何破坏者(execpt可能是调试器)。但是Monodevelop缺乏VS的漂亮重构工具。