有没有人使用过大型或中型项目的开源.NET实现Mono?我想知道它是否适合现实世界的生产环境。它是否稳定,快速,兼容,......足以使用?是否需要花费大量精力将项目移植到Mono运行时,或者它是否真的非常兼容,只需要为Microsoft的运行时获取并运行已编写的代码?
答案 0 :(得分:31)
我已将它用于许多内部和商业项目并取得了巨大成功。我的警告:
编辑:我说不从源代码(发布版或SVN版)编译自己的原因是它很容易配置它而不是发布二进制文件和隐藏错误,例如在垃圾收集中。
编辑2:忘记回答你问题的第二部分。在我的情况下,我没有移植代码的问题,但我没有使用任何特定于MS的库(WinForms,ASP.NET等)。如果你只使用System。*的东西,你会没事的;除此之外,你可能遇到问题。但是,Mono 2.0非常稳固。
答案 1 :(得分:5)
我发现Mono主要与MS二进制兼容。因此,我只是用MS编译,并在任何地方运行,就像Java一样!
Linux上Mono的性能与MS非常接近,在某些情况下慢了2倍,而在Windows上运行Mono则慢了5-10倍(但你应该坚持使用MS)。
答案 2 :(得分:5)
我有一些Mono的经验。
可以毫无问题地移植纯.NET内容(如业务逻辑,控制器或算法)。然而,奇怪的事情开始出现在与操作系统,UI,服务或持久性。所以要做好一些调试和黑客的准备。
可能会有所帮助的事情:
虽然目前有一些companies going into production with Mono,但由于以下原因,我仍然会在此之前等待:
答案 3 :(得分:3)
如果您正在使用ASP.NET 2.0,它可以很好地工作。 Winforms可能会起作用,但它可能会导致显示问题。如果你想在表单应用程序中兼容,我建议使用GTK#,因为它是跨平台的。
如同建议的那样,只要你通过测试,我同意在商业上使用它,如果这对你来说是一个可行的选择,除非它是你需要的winforms。在我看来,我现在会远离它。忘记WPF,因为目前没有支持,可能永远不会(虽然他们正在开发月光,也就是linux的银光)
答案 4 :(得分:1)
我自己没有使用过Mono,但您可能有兴趣知道FogBugz使用Mono在Linux平台上提供Lucene.NET。 (我只知道这个,因为Joel在Stack Overflow Podcast#24中提到它。)
答案 5 :(得分:0)
我在生产中有一堆shell应用程序。
我同意@cody-brocious,写了很多单元测试。我在过去发现,正则表达式的工作方式与Windows CLR完全不同。
它实际上比你想象的更简单,只需编译和运行。如果您在项目中使用NAnt,则更容易转换。
我通常从源版本安装mono,我没有遇到任何问题。
答案 6 :(得分:0)
我已经将它用于加密/解密工具,并且工作正常。
将来我会考虑使用Mono / C#,但我不认为它会像Windows上的.Net一样完全。
答案 7 :(得分:0)
当然,你可以,特别是在Mono 2.0发布之后。 Mono 2.0已经为实际项目做好了准备。