.NET和Mono之间的开发差异

我正在研究Mono和.NET C#,我们将来需要在项目开发时在Linux服务器上运行代码。 此时我一直在关注ASP.NET MVC和Mono。

我运行Ubuntu发行版并希望为Web应用程序进行开发,其他一些开发人员使用Windows并使用Visual Studio运行其他.NET项目。

Mono没有提供Visual Studio的function吗?

如果以后在Linux上运行它,我们不应该使用MonoDevelop吗?

是否有一些第三方工具或加载项可能会成为Mono的问题?

Mono没有提供Visual Studio的function吗?
MonoDevelop可能就是你的意思。 MonoDevelop提供基于GTK的Linux,Mac OS X,Windows上的跨平台开发。 然而,由于显而易见的原因,它并不像Visual Studio那样精致 – 它有3个人制作它,而不是数百个。 它有一些很好的function,特别是它的源代码控制插件架构。 但是,由于Visual Studio Express是免费的,因此Windows使用它的优势并不多。

它使用与Visual Studio相同的.csproj.sln格式,但XML文档格式不同。

如果以后在Linux上运行它,我们不应该使用MonoDevelop吗?
如上所述,项目格式是可互操作的。

是否有一些第三方工具或加载项可能会成为Mono的问题?
与Visual Studio不同,Monodevelop没有大量的加载项。 您在Monodevelop中使用的那些根本不会影响您的.csproj文件,因为Visual Studio无法读取它通常会忽略。


正如人们所说,不要将Mono与MonoDevelop混淆。 MonoDevelop是Mono的IDE,最初来自(分叉)SharpDevelop。

Mono是“猿”Microsoft CLR和框架库的跨平台框架。

我在这方面没有太多经验,但……

Mono项目路线图概述了与MS.NET相比,Mono中新增,即将推出和未出现的function。 即使Mono与.NET具有相同的类,请注意兼容性不是100%(尽管这通常是他们的目标)。 我不确定Mono中是否存在遗漏的全面清单。

MonoDevelop现在可以在Windows和Linux上使用,因此您最好使用它。 但是,MonoDevelop似乎使用与Visual Studio和SharpDevelop相同的项目文件格式,因此您可以尝试混合使用IDE。

当然,在使用第三方.NET库时,请注意其中许多尚未使用mono进行测试,特别是使用P / Invoke的任何内容都无法在Mono for Linux上运行。 但是,与mono的大多数不兼容性都很小,如果您坚持使用开源库,您可以随时修复遇到的任何不兼容问题。

您还可以查看Visual Studio的Mono Tools 。 它允许您的视觉工作室开发人员使用单声道平台进行目标和测试

您的目标是始终获得支持,和/或主要在Linux上使用该软件,对吗? 这实际上是我在一段时间内在会议上问过Mono开发人员的一个问题,它基本上归结为你想用它做什么。

如果您希望它始终在Linux上运行,那么请使用Mono。 如果您只关心Windows,请使用Visual Studio。

如果您使用的是Mono,那么请在所有开发人员中使用MonoDevelop。 它只会让以后的生活变得更轻松,并且它会确保无论你在一个人身上写下什么都会对每个人都有效。

不幸的是,我不知道Mono与.NET的确切限制/优势的答案,除了.NET更进一步,Mono追赶,也不是不同的插件。

如果您的开发人员都不需要在Mono上开发某些function,我建议您在Windows上使用Visual Studio。 然后在Mono上测试应用程序

  1. 适用于Visual Studio的Mono工具
  2. 手动复制二进制文件
  3. 查看Linux上的代码并在MonoDevelop中构建。

我个人尝试第三种方式时遇到了很多小问题,但幸运的是我能找到解决方法。

只有当您触摸Mono时,您才知道应用程序的哪个部分需要调整。

http://www.mono-project.com/Start

如果你可以提供帮助,它建议避免单声道实现Remoting。 似乎有一些意想不到的打嗝和调试它不是直截了当的。

我们有一个非常Remoting重型产品,我们试图移植到Mono,所以我们可以支持Linux。 由于无法解决Remoting问题,我们最终不得不放弃完全支持Linux的尝试。

警告 :我的经历可能已经过时了。 见下面的评论

你不需要MonoDevelop来在Linux中运行ASP.NET程序,在开发服务器上创建一个共享文件夹(VMWare或真实的文件夹),经常测试,这样你就可以轻松解决Mono中缺少的问题。

这与我在我的.NET Remoting程序中使用的方法相同,我在Ubuntu服务器上托管。 但我反过来说,因为我是一个独立的程序员,我在我的Windows开发机器上创建一个共享文件夹,然后访问我的Ubuntu测试服务器上的共享文件夹(vmware’d)。 在ASP.NET上,如果更改没有反映在您的Ubuntu测试服务器上,则在终端中只需触摸Ubuntu测试服务器中的Web.Config文件即可。 即touch Web.Config ,然后刷新页面

Mono具有ASP.NET的全function实现。 这包括对ASP.NET Web窗体和Web服务的完全支持。 这实际上意味着您使用.NET Framework开发的任何ASP.NET应用程序或多或少都可以与Mono一起使用。 显然,可能需要进行更改,例如数据访问更改,删除对.NET Framework BCL类型的任何依赖。 单用户 – 网络编程C#:ubuntu 11.04