12

最近,我在 Ubuntu linux 中遇到了 Mono 和 MonoDevelop 包。他们声称拥有符合 CLI 的 .NET 运行时。在自己安装软件包之前,我想知道以下内容:

  1. 单声道有多强大?

  2. 我可以像为 Windows 开发 WinForm 应用程序一样为 linux 开发 GUI 应用程序吗?

  3. MonoDevelop IDE 是否与 Visual Studio IDE 兼容。我可以将 VS 2008 解决方案导入 MonoDevelop 并工作吗?

  4. 它是否支持 .NET 2.0 及更高版本?

编辑:再增加一个疑问

有没有办法在 Linux 中运行 .NET exe(winform 应用程序的)而不在 linux 中构建代码?事实上,我没有之前开发的一些小型实用程序的代码,我想在 linux 中运行它们。

4

7 回答 7

6
  1. (奇怪,markdown 以 1 开始枚举,尽管我从 2 开始......)

  2. 是的,你可以,但是你受限于 3rd-party 组件,因为内部实现不同,上次我检查(不久前),Mono WinForms 实现让我的测试应用看起来很奇怪(所有者绘制列表显示)。虽然 Mono 声称它现在完全兼容 WinForms-2.0,但并不真正推荐它。

  3. MonoDevelop 是/曾经是 SharpDevelop 分支,后者具有解决方案支持。我不知道 MonoDevelop 有没有。但很酷的是,您可以使用 Visual Studio 进行开发并在 Mono 上运行已编译的应用程序。顺便说一下,Mono 也可用于 Windows。

  4. 是的,就 CLR 而言,确实如此。正如 Marc Gravell 已经写的那样,缺少 Windows Foundation 库以及其他一些库(例如 System.Management)。但大多数情况下应该都能正常工作,包括 ASP.NET 2.0。Mono 的应用程序可移植性指南是一本很好的读物。

于 2009-04-28T10:02:52.000 回答
2

1:其实很好。并非所有完整的框架都在那里,因此如果您正在编写应该在 MS .NET 和 mono 上构建的代码,您需要针对这两个平台尽早构建和测试

4:是的 - 尽管 WPF/WCF/WF (3.0) 之类的东西缺失或精简了

我对开发环境了解不多,因为我使用 VSTS(在 Windows 上)并且只使用 NANT 脚本在单声道上进行构建......

于 2009-04-28T10:00:00.197 回答
2
  1. 定义“强大”。
  2. Mono 有一个 WinForms 实现,以允许某种程度的源代码兼容性。但是,根据您的需要,您可能希望将 Mono 绑定之一用于 Linux 本机框架,例如Gtk#Qyoto
  3. 不会知道。
  4. 取决于您所指的 .NET 的哪些部分。C# 语言似乎很流行,越接近前面提到的企业特性,事情就越模糊。

总而言之,如果您将使用 Mono 作为单独的目标平台,您可能会得到很好的结果。如果您想要一个不需要代码更改的 .NET 兼容层,那就少这样。

于 2009-04-28T11:12:48.790 回答
1
  1. 很强大。核心实现中没有重大错误。这不是一个科学项目。不足之处主要在你所期望的地方,即最新的 API(微软在这方面天生就有先发优势)。

  2. 是的。我们刚刚完成了一个项目,其中大部分 GUI 代码都是在 Windows 上的 WinForms 中开发的。我能够使用 Ubuntu 来处理它,而不会感到头疼。也就是说,这是 API 中最难的部分之一,并且仍然存在问题。有关详细信息,请参阅http://mono-project.com/WinForms

  3. 不知道,因为我没用过。
  4. 是的,但同样,运行时中可能缺少一些 API。

注意,我使用的是 Ubuntu Hardy (8.04)。

于 2009-04-28T10:07:52.953 回答
1
  1. Mono 非常强大。它在一个非常强大的开源骨架上拥有所有 .Net 肌肉。

  2. 当您说“为 linux 开发 GUI 应用程序,就像为 Windows 开发 WinForm 应用程序一样”时,我理解您是在询问一个可以让您快速创建 UI 的可视化设计器。是的,有可能。MonoDevelop 有 Stetic - Gtk# 的内置视觉设计器。还有QyotoDevelop可以在 MonoDevelop 中启用 QT 支持。

  3. 是的,MonoDevelop 原生支持 VS 项目/解决方案文件格式。您可以使用相同的代码库在 Windows 上使用 .Net 中的 VS 编译您的应用程序,并在 Linux 上使用 Mono 中的 win MD。

  4. 目前,Mono 支持 C# 3.0,除了已经实现的一些东西,还有很多正在开发中。

  5. 是的,在许多情况下,可以在 Mono 中运行 .Net 编译的应用程序,但是有了 MonoDevelop 对 VS 解决方案的支持,这并不重要。重建整个项目只需要按F7,所以付出的努力真的可以忽略不计。检查您的应用程序是否可以在 Mono 中运行的最佳工具是MoMA

于 2009-05-07T09:15:37.997 回答
0
  1. Mono 非常强大,有时甚至比 Microsoft 的实现更强大。链接文本
  2. 是的你可以。支持 Winforms 2.0
  3. 我相信是这样。
  4. 是的,它确实。支持 C# 3,只需查看 winforms 和 asp.net 实现即可了解每个项目的支持程度。看http://mono-project.com
于 2009-04-28T10:04:06.317 回答
0

我在单声道中使用 WinForms。2.x 版本非常好。

我在 windows 上的 visual-studio 中开发表单,并在 Linux 中运行它们,代码更改为零。是的,表单看起来与 XP 上的有点不同,但话说回来,在 GNOME 中以 XP 为主题的 GUI 看起来有点奇怪。

如果您刚刚开始,请坚持使用 WinForms,同时熟悉 Mono/Linux。但是在某些时候,您可能想要调查 GTK。

于 2009-04-29T17:04:25.207 回答