Linux上的.NET框架Mono 2.0发布

作者: harde 分类: DotNet 发布时间: 2008-11-22 17:16

Novell 旗下的 Mono 项目今日发布 2.0 版, 使在 Linux 平台上实现微软 .NET 框架项目获得巨大促进。Mono 2.0 是 Novell 主持的一个开源项目,目标是在 Linux 平台实现微软的 .NET 框架。随着最新的 2.0 版发布,二者之间的差距越来越小。

  虽然 Mono 2.0 兼容微软 .NET 2.0,但和微软最新的 .NET 版本并不完全兼容。Mono 的努力非常重要,因为它的目标是在 Linux 上运行 .NET 程序。

(Harde下载时Mono已经更新到2.0.1了,下载地址:http://ftp.novell.com/pub/mono/archive/2.0.1/windows-installer/1/mono-2.0.1-gtksharp-2.10.4-win32-1.exe,大家可以访问http://ftp.novell.com/pub/mono/archive/ 以获得最新版本)

  Mono 项目主管 Miguel de Icaza 告诉记者,”我们正在某些地方赶上微软的 .NET。”

  De Icaza 表示,Mono 项目的一直在做的是辨别开发者们用的是 .NET 的哪些部分。自 Mono 1.2.3 发布以来,MoMA (Mono 移植分析) 工具就出台,用来检查微软的 .NET 可执行程序,以便获得运行 .NET 所需要的所有东西。

  得益于 MoMA 的统计结果,我们可以将人们最实用的东西优先对待。De Icaza 说,这意味着我们推迟了一些 API 的开发,比如,WPF 就不在我们目前的开发进度中。

  WPF 是微软 .NET 3.0 的一部分,曾一度以代码名 Avalon 闻名。WPF 包含在 Windows Vista 和 Windows Server 2008 中,为开发者提供了一个图形子系统。 De Icaza 说,WPF 目前还没有被广泛采用。

  IT 开发者和厂商之间的步调并不一致。他说,诚然,会有些早期采用者,他们喜欢最新的 API,但这些用户并不是 Mono 的用户,除此之外的普通开发者会和 Mono 保持一致。

  除了不支持 WPF,Mono 2.0 还有其它一些问题。Novell 产品经理,Joseph Hill 表示,那些通过了 MoMA 分析的程序中,只有50%才100%兼容 .NET。50% 足可以说明 Mono 的进展状况,Mono 前面的版本的这一比例仅为10%。.NET 可以调用非托管代码以及老的函数库。这就带来一些麻烦,如果某个程序调用了老的函数库,而 Linux 上没有这种库,移植这样的程序就会出现问题。另外,有些函数是只用于 Windows 平台的,这样的函数,Mono 也不会移植。

  从技术角度看,Mono 2.0 的主要改进是完全支持 Windows Form,这项工作 Mono 花费了几年的工夫。

  Mono 2.0 对我们非常重要,我们已经完全支持 .NET 2.0。Hill 说,我们的 2.0 版工作已经做了很久,现在已经完全支持桌面组件,Windows Form,我们已经达到我们所认为的完全支持。

  Windows Form 是 Windows 桌面平台的一个图形 API,Hill 承认,将 Windows Form 完整集成到 Mono 2.0 是一个艰巨的任务。可能其中最大组件就是内嵌的浏览器控件。Hill 解释,它是基于 Windows 平台的 IE 浏览器的,我们基于 Firefox 重写了这个控件,但必须保留原来 IE 控件的一些行为。

  Novell 从2001年开始从事 Mono 项目,2004年推出第一个 Beta 版 Mono 1.0。Mono 2.0 是一个重大的版本升级,下一个版本 Mono 2.2 将于今年11月发布。Mono 2.2 会推出新的代码生成引擎,会产生更优质的代码。会对 Windows Form 以及其它内容做进一步改进。

使用方法
1、用Visual Studio创建一个Windows应用程序,假设叫做WinApp,并添加一个按钮。
2、编译此项目,得到一个WinApp.exe文件。
3、自己建立一个文件夹WinApp,其中再建立bin和lib这两个文件夹
4、将mono安装文件夹中的bin和lib子文件夹中需要的文件拷贝至刚才建立的那两个文件夹。
5、将需要运行的exe文件放入WinApp文件夹。
6、调用,可以使用bat批处理来调用,binmono.exe WinApp.exe。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注