.NET和Mono之间的开发差异

时间:2010-05-06 17:53:33

标签: c# .net mono

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

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

Mono没有提供Visual Studio的功能吗?

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

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

8 个答案:

答案 0 :(得分:19)

Mono没有提供Visual Studio的功能吗?
MonoDevelop可能就是你的意思。 MonoDevelop提供基于GTK的Linux,Mac OS X,Windows上的跨平台开发。然而,由于显而易见的原因,它并不像Visual Studio那样精致 - 它有3个人制作它,而不是数百个。它有一些很好的功能,特别是它的源代码控制插件架构。但是,由于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和框架库。

答案 1 :(得分:5)

我在这个领域没有多少经验但是......

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

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

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

答案 2 :(得分:5)

您也可以查看Mono Tools for Visual Studio。它可以让您的视觉工作室开发人员使用单声道平台进行定位和测试。

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:1)

如果您的开发人员都不需要在Mono上开发某些功能,我建议您在Windows上使用Visual Studio。然后通过

在Mono上测试应用程序
  1. Visual Studio的Mono工具
  2. 手动复制二进制文件
  3. 查看Linux上的代码并在MonoDevelop中构建。
  4. 当我尝试第三种方式时,我个人经历了很多小麻烦,但幸运的是我有能力找到解决方法。

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

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