想要:在MacOS和Linux上使用C#(mono)的用户体验

想要:在MacOS和Linux上使用C#(mono)的用户体验,第1张

概述我有一个朋友,他是一个严肃的 Linux开发人员,但现在他正在Windows上使用C#并且非常喜欢它.我被C#所吸引,因为像Java一样,我应该可以在一个系统上编译并在任何地方运行. 如果您使用C#在Windows上进行开发,那么您使用的是dot-Net.在Linux和MacOS上,您使用的是Mono. 其他人发布Mono非常好,不再是科学项目,并且大多数核心Microsoft功能都存在.但这并不 我有一个朋友,他是一个严肃的 Linux开发人员,但现在他正在windows上使用C#并且非常喜欢它.我被C#所吸引,因为像Java一样,我应该可以在一个系统上编译并在任何地方运行.

如果您使用C#在windows上进行开发,那么您使用的是dot-Net.在linux和MacOS上,您使用的是Mono.

其他人发布Mono非常好,不再是科学项目,并且大多数核心Microsoft功能都存在.但这并不能解决我的问题.我在想:

> linux / MacOS上的Mono性能如何与Java相比?如果我想在具有相同目标代码的所有三个平台上快速运行,那么我最好的选择是什么?
>将Mono与makefile一起使用并使用emacs进行开发是否容易/可能/合理?
> MacOS和linux中是否支持代码分解,或者我最好只是咬紧牙关并在windows中完成所有开发工作?
> Mono如何与Subversion以及其他开源开发堆栈一起使用? autoconf怎么样?或者这是一种完全不同的做事方式?

谢谢

解决方法 我已经在linux上使用Mono大约三年了,最近一直在OS X上使用它.一些linux的东西非常广泛,但OS X的东西到目前为止只是一些简单的ASP.NET MVC2应用程序.

1)Mono的表现对我来说从来都不是问题.这并不是说性能不重要,只是Mono本身的性能从未成为问题.我所做的很多都是基于网络的,因此I / O和数据库内存的使用在Mono之前就已经让我感到震惊.

从历史上看,Mono最大的缺点就是垃圾收集器(GC).我想说Java在这方面有更好的调整. Mono的最新版本在这方面取得了巨大进步,但在比较方面我没有任何硬数据.

我确信Mono有时会更快和Java有时但我会说Java总体上更快.

2)您当然可以使用makefile进行Mono开发.当然Mono团队本身也是如此.你当然可以使用Emacs,有一个C# mode for it.

我倾向于自己使用MonoDevelop和xbuild(monbu版本的msbuild),并且没有任何在Emacs中进行C#工作的经验. MonoDevelop很棒,因为它在所有平台上完全相同.此外,虽然我很少再使用它,但项目格式与Visual Studio和SharpDevelop相同是很好的.

3)MonoDevelop具有相当不错的代码分解支持.在windows,linux和Mac上也是如此.您不需要使用windows进行开发(尽管您当然可以)但我相信您会更喜欢使用像MonoDevelop这样的IDE.一旦你习惯了,就像智能​​感知这样的东西变得难以生存.但是,集成调试,能够深入到框架,数据库集成,单元​​测试,SCM集成以及其他一流的工具支持只是一种方法(至少对我而言).

4)Mono本身并不关心版本控制.您的源文件只是文本,您可以使用任何东西来管理它们.

也就是说,MonoDevelop在IDE中内置了极好的Subversion支持.我已经广泛使用它,这也是我在windows上移动MonoDevelop时遇到麻烦的原因之一.最新版本的MonoDevelop(2.6 beta)也包括Git支持.

您没有提到单元测试,但MonoDevelop还在IDE中内置了NUnit支持.我也在每个项目上使用它,它的工作非常出色. MonoDevelop中的版本是2.4.8(如果内存服务),所以它不是很新,但效果很好.

简而言之,Mono在开源工具方面非常适用.它一直很适合我.

autoconf当然是由Mono项目本身使用的,但作为Mono开发人员,我从未见过需要它.我努力只在我的项目中使用托管代码.因此,我在目标平台上所需要的只是Mono(或.NET).不必担心所有这些问题是Mono或Java等托管环境的主要优点之一.运行时本身(CLR)确保我的应用程序具有正常运行所需的一切.

我知道MonoDevelop将为C/C++项目(非Mono)构建autoconf / autorun文件,但我自己并没有做太多.

至于之前的评论,Mono JIT显然已经调整到了目标平台.这是平台特定性能调整发生的地方.

正如评论一样,我发现Mono最好被视为一个开发环境,而不是微软的兼容层. Mono团队以许多有趣的方式扩展了.NET.您为Mono开发的任何内容都将在.NET上运行,但有一些.NET功能不适用于Mono.例如,Mono不支持windows Presentation Foundation(WPF).您必须使用windows窗体或GTK#进行跨平台GUI工作.您还可以在Mac上使用Cocoa#或MonoMac,在iPhone上使用Monotouch或在AndroID上使用MonoDroID.你可以使用Moonlight而不是Silverlight,虽然我没有玩过很多.

自从你问起Java以来​​还有一件事.我发现Java世界有几次库在.NET世界中找不到相应的库.在这些情况下,我有幸使用IKVM.NET将其集成到我的Mono应用程序中. IKVM.NET也适用于.NET,但Mono和IKVM.NET非常舒适,甚至可以共享一些代码.

所以,你去,至少一个真正的答案.

总结

以上是内存溢出为你收集整理的想要:在MacOS和Linux上使用C#(mono)的用户体验全部内容,希望文章能够帮你解决想要:在MacOS和Linux上使用C#(mono)的用户体验所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1030056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存