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用户开发的。
原文:http://www.infoq.com/cn/news/2018/03/mono-forms-carbon64
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com