MonoMac 是否已弃用?

Is MonoMac deprecated?

MonoMac 的页面似乎已被放弃。它似乎是几年前的最后一次更新,因为它说 "Mountain Lion" 是 "new" 操作系统。

New Lion and Mountain Lion APIs for AppKit

MonoMac 在 Xamarin Studio 中 "Unsupported" 下(我想下载 Mono Develop,但页面自动重定向到 Xamarin Studio)。

那么 MonoMac 是否已被弃用,或者它是否仍在与 Xamarin.Mac 一起积极开发?

差异没有很好地传达; they don't even do a great job themselves on the forums. And MonoMac 去年不是特别活跃。

但快速回答是 MonoMac 存在。 "Unsupported" 仅表示您尚未购买 Xamarin 许可证,所以不要指望 Xamarin 客户支持在出现问题时提供帮助。但是 你在 Xamarin.Mac 出现之前就已经在那条船上了。

请注意,Mono qua 开源运行时仍在积极开发中。您还可以 download MonoDevelop for Linux, for example, which sort of mimics where MonoMac was before Xamarin starting selling licenses. MonoDevelop itself is still pretty active,在撰写本文时最近 13 天前签到。所以 Mono 仍然存在,并且实际上是 Xamarin 所有编程产品的子集。

Mono-on-Mac的两个区别是你可以使用MonoMac的AppKit等,组装的active在 Mac 上开发的 Xamarin Studio 版本,而不是坚持使用 Gtk# 和 MonoDevelop。这些都是非常好的东西。

MonoMac 相当于 Xamarin.Mac.

的 Xamarin "Starter" 版本

但更好。 Xamarin 的其他两个受支持平台的 "Starter Version" —— Xamarin.iOS 和 Xamarin.Android —— 具有 "build limits",这限制了在你之前可以构建的应用程序(包括链接)的大小。重新需要购买许可证。 MonoMac 不是这样。所以 MonoMac-via-Xamarin Studio 是一种 "Starter Version on steroids"。在 MonoMac 上,您可以制作任意大的应用程序并将其发布到野外。

问题? MonoMac 项目基本上假设您的用户在他们的 Mac 上安装了 Mono 运行时,并且将通过命令行上的 mono 命令打开您的程序集——就像您必须的那样用 "old" MonoMac 做。如果您想针对传统的最终用户,那可就不太顺利了。您可以使用 BockBuild to help do something similar to Xamarin.Mac's app bundling without a license (that's how BockBuild is used by Banshee,无论如何)制作独立的应用程序包,但我不确定 BockBuild 的通用性如何。

但是...在其他两个"Starter"版本中,您得到一个不错的,准备好的-部署应用程序包。也就是说,如果您已向 Apple 支付 99 美元成为 Apple Developer,并在 Starter 上制作了一个小型 Xamarin.iOS 应用程序,您可以立即将该应用程序部署到 iOS App Store,而无需支付 Xamarin.iOS许可证。因此,从这个意义上说,MonoMac 比其他地方的 Starter 版本更差

历史推测(我对此有点模糊): MonoMac Packager showed up that Xamarin.Mac was released 和 MonoMac 通过 MonoDevelop "died"。人们确实在 Mac App Store (iirc) 上发布了 MonoMac 应用程序,但 Xamarin 宁愿您今天购买许可证,并且 开源 (?) MonoMac Packager 的支持 did die,被 Xamarin.Mac 吞噬。我相信要点是 Xamarin 明白他们是从开源 MonoMac 开始的,如果他们停止支持 Mac 开发(也就是说,如果他们 减少 它的有用性来自我们 Xamarin 之前的期望),会有一些阻力。

EDIT: A few more historical links. Cocoa#, which was released in 2004 and continued development until 2008, predated and, Miguel says, informed the creation of MonoMac. CocoaSharp was also released with Mono for a while. I know I've conflated MonoMac & Cocoa# in my head at times. MonoMac seems to have been born around 2010, after MonoTouch.

Xamarin 让我们在他们最新的 Xamarin Studio 中保留 MonoMac 并继续受益于他们对核心 Mac 功能集的升级,这真是太好了。

所以Xamarin.Mac是建立在MonoMac之上的,从某种意义上说不能不支持。唯一的问题是 Xamarin 允许我们使用 "unsupported" MonoMac 项目多长时间来构建我们想要的大型应用程序,而不是用 "Starter" 版本替换 MonoMac这类似于 X.iOS 和 X.Android。我希望他们将继续做正确的事,而不是剥夺原始开源 Mono 社区赋予我们的能力:任何人都可以使用 C# 的原生 Mac UI 构建功能齐全的应用程序。

感觉有点乱,但希望对您有所帮助。 MonoMac 存在,Xamarin.Mac 是它的超集。同样,购买 Xamarin.Mac 的最大优势是应用程序捆绑,但也有一些额外的程序集(James 在下面列出了一些:"GameKit, StoreKit etc.."),并且正如 James 还指出的那样,支持 64 位。 Xamarin 没有很好地营销这些好处。

然而,你的问题的底线是,你不应该觉得 MonoMac 是第二个 class 公民。实际上,您现在处于一个非常好的位置,可以根据需要构建复杂的 Mac-native[ish] 应用程序。

更新:

Microsoft 收购了 Xamarin 并制作了 Xamarin.Mac OSS。如果您希望使用 C# 构建 Mac 应用程序,那么您应该使用 Xamarin.Mac。 MonoMac 不会积极开发,因为 Xam.Mac 对所有人免费。

我认为与 C# Mac 开发相比,确实有 3 件事可比。我们有 MonoMac、Xamarin.Mac Classic 和 Xamarin.Mac Unified。它们各不相同,但对于开发人员而言,Classic 与 Unified 可能是最大的区别。

MonoMac 最初是在周末黑客马拉松上创建的一个开源项目。不久之后,Xamarin 提供了一个名为 Xamarin.Mac 的 MonoMac 超集。它包含更广泛的 APIs(GameKit、StoreKit 等),这些在 MonoMac 中不可用。 Xamarin.Mac 还为您提供了 Mono 的商业许可,并允许您发布到 Mac AppStore。如果您对 MonoMac 感兴趣,您可以获取 the repository off GitHub 并开始贡献该项目。

在过去的 18 个月里,我们一直致力于统一我们的 iOS 和 Mac 产品核心,同时修复一些问题(方法和属性的拼写错误等......)并添加 64 位支持。 Xamarin.Mac 的这个新版本还包含一个新的垃圾收集器和一些新的数据类型。我们这样做的原因既是为了允许 Xamarin.iOS 和 Xamarin.Mac 项目之间更多的代码共享,也是为了支持 Apple 发布的最新 APIs,它们仅是 64 位的。

举个例子,如果你想在 Mac 上使用 MapKit,你需要使用 Unified API,因为它只有 64 位 API。

如果您现在使用 MonoMac 开发您的应用程序,如果您想在 Mac 应用程序上发布您的应用程序,您将可以轻松升级到统一 API店铺。您还应该查看您认为需要的 API。作为一般经验法则,10.10 中的任何新 API 都可能需要新的统一 API,因此需要 Xamarin.Mac.

我不认为这两个答案涵盖了 MonoMac 和 Xamarin.Mac 的所有历史,所以作为 Timeline of .NET/Mono/Xamarin 的作者,我想提出另一个答案。

MonoMac 是在 Mono 家伙完成了对 MonoTouch 的主要开发之后诞生的,并希望将同类技术带入桌面。 Miguel blogged about its 1.0 release。因此,它作为 Mono 的一部分作为开​​源发布。

Xamarin 的推出显着改变了项目的方式 运行。显然MonoTouch和Mono for Android成为旗舰产品,而MonoMac是另一个有潜力的产品。因此,在2012年12月12日,Xamarin.Mac被构建以加入Xamarin.iOS和Xamarin.Android。商业 Xamarin b运行ding 与开源 Mono b运行ding 划清界限。从那以后,MonoMac 的开发速度放慢了,更多的资源转移到了 Xamarin.Mac.

2014 年发生了一个更具历史意义的事件,当时 Apple 对 64 位应用程序提出了要求,iOS 和 Mac 应用程序工具供应商都必须满足。 Xamarin 明确宣布 Xamarin.iOS 和 Xamarin.Mac 使用 Unified API on their team blog 支持完整的 64 位。由于 MonoMac 始终是 32 位的,在我看来,该博客 post 表明 MonoMac 已死,但我看不到其他答案提到了这一重要公告。

如果您按照文档进行操作,您可以看到数据类型和 API 集有许多重大变化,

https://developer.xamarin.com/guides/cross-platform/macios/unified/updating-mac-apps/

因此,如果最初 Xamarin.Mac 更像是一个基于 MonoMac 的工具链,从那时起它就变成了一个完全不同的野兽,拥有征服更多挑战的新力量。

2016年3月31日,Microsoft/Xamarin公布了Xamarin SDK的开源计划,2016年4月27日,代码发布于GitHub、http://open.xamarin.com。所以现在你应该完全放弃 MonoMac 并拥抱 Xamarin.Mac 与 Xamarin Studio。不过我不确定它的社区版有什么限制。

正如@Lex 所说:

On Mar 31, 2016, Microsoft/Xamarin announced the open source plan of Xamarin SDK, and on April 27, 2016 the code was published at GitHub, http://open.xamarin.com. So now you should completely give up MonoMac and embrace Xamarin.Mac.

MonoMac 已过时(支持 Xamarin.Mac/iOS, which is also opensource and free). This has been confirmed by Miguel in the mailing list