64 位的 Mac OS X 也有 Windows.Forms 了

  • Jeff Martin
  • 姚佳灵

2018 年 3 月 4 日

话题:.NET语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Mono 长期以来一直为 Linux、Mac 和 Windows 提供Windows.Forms的纯 C# 实现。随着技术潮流的变化,Mono 的 Windows.Forms 平台仍然没有得到很好的发展,还只是各种第三方库和应用程序的依赖,这使得它的重要性超过了那些基于 WinForms 的应用程序。Mono 默认切换到 64 位,给 MacOS 对 Windows.Forms 的持续支持带来了问题,因为这个支持是建立在 32 位版本 Carbon 的基础之上的。

为了弥补这个差距,Mono 的 Miguel de Icaza 最近在研究如何改进 MacOS 的支持。他最初的选择要么是利用 64 位版本 Carbon 提供的 API,要么是尝试用 Xamarin.Mac 在 Cocoa 之上构建新后端。对 64 位版本 Carbon 的初步研究表明,Windows.Forms 的 API 文档很差劲,很难看出 64 位版本能做些什么。于是,de Icaza 开始尝试使用 Xamarin.Mac。

幸运的是,de Icaza 把他的开发公布于众,这让 Filip Navara 有机会注意到他在做的事。然后,Navara 联系了 de lacaza,提到他在做的一个项目也许对这个新尝试有帮助。Navara 提供了一个现成的 Cocoa 后端,可以重新规划后用在 Mono 上。Navara 的代码来自 Mono SWF,它为 Mono 构建了可用的 Cocoa 后端。

至此,de lcaza 决定把这些代码作为新 64 位版本的实现基础,在 MacOS 上支持 Mono 的 Windows.Forms。在审查代码时,de lcaza 注意到,对于某些控件,代码中使用了本地 AppKit。它也用到了 System.Drawing 的定制版本,这个版本最初是 Mono 为 iOS 用户开发的。

查看英文原文:Windows.Forms Comes to 64-bit Mac OS X


感谢薛命灯对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

.NET语言 & 开发