MonoMac 的页面似乎已被废弃。它似乎是几年前的最后一次更新,因为它说“Mountain Lion”是“新”操作系统。
AppKit 的新 Lion 和 Mountain Lion API
MonoMac 在 Xamarin Studio 的“不支持”下(我想下载 Mono Develop,但页面自动重定向到 Xamarin Studio)。
那么 MonoMac 是否已被弃用,或者它是否仍在与 Xamarin.Mac 一起积极开发?
MonoMac 的页面似乎已被废弃。它似乎是几年前的最后一次更新,因为它说“Mountain Lion”是“新”操作系统。
AppKit 的新 Lion 和 Mountain Lion API
MonoMac 在 Xamarin Studio 的“不支持”下(我想下载 Mono Develop,但页面自动重定向到 Xamarin Studio)。
那么 MonoMac 是否已被弃用,或者它是否仍在与 Xamarin.Mac 一起积极开发?
差异没有很好地传达;他们甚至在论坛上自己都做得不好。MonoMac去年并不是特别活跃。
但快速的答案是 MonoMac 存在。“不受支持”仅表示您尚未购买 Xamarin 许可证,因此不要指望 Xamarin 客户支持会在出现问题时提供帮助。但在 Xamarin.Mac 出现之前,你已经在船上了。
请注意,Mono qua开源运行时仍在积极开发中。例如,您仍然可以下载 MonoDevelop for Linux,这类似于 MonoMac 在 Xamarin 开始销售许可证之前的样子。MonoDevelop 本身仍然非常活跃,在撰写本文时最近才 13 天前签入。所以 Mono 仍然存在,事实上,它是 Xamarin 的所有编程产品的一个子集。
Mono-on-Mac 的两个不同之处在于,您可以使用 MonoMac 的 AppKit 等程序集和Xamarin Studio 的活动版本在 Mac 上进行开发,而不必拘泥于 Gtk# 和 MonoDevelop。这些都是非常好的事情。
MonoMac 相当于 Xamarin.Mac 的 Xamarin“Starter”版本。
但它更好。Xamarin 的其他两个受支持平台(Xamarin.iOS 和 Xamarin.Android)的“初始版本”具有“构建限制”,这限制了您在购买许可证之前可以构建的应用程序(包括链接)的大小. MonoMac 并非如此。所以 MonoMac-via-Xamarin Studio 是一种“类固醇入门版”。在 MonoMac 上,您可以制作任意大小的应用程序并将其发布到野外。
问题?MonoMac 项目本质上假设您的用户在他们的 Mac 上安装了 Mono 运行时,并将通过mono
命令行上的命令打开您的程序集——就像您必须使用“旧”MonoMac 一样。如果您想针对传统的最终用户,这并不顺利。您可以使用BockBuild来帮助执行类似于 Xamarin.Mac 的应用程序捆绑的事情,而无需许可证(这就是Banshee使用 BockBuild 的方式,无论如何)来制作自包含的应用程序包,但我不确定 BockBuild 的通用性如何。
但是……在其他两个“Starter”版本中,您确实得到了一个不错的、可立即部署的应用程序包。也就是说,如果你已向 Apple 支付了 99 美元成为 Apple 开发人员并在 Starter 上制作了一个小型 Xamarin.iOS 应用程序,则可以立即将该应用程序部署到 iOS App Store,而无需支付 Xamarin.iOS 许可证。所以,从这个意义上说,MonoMac比其他地方的 Starter 版本更糟糕。
历史推测(我对此有点模糊):MonoMac Packager出现的时间正好是 Xamarin.Mac 发布和 MonoMac 通过 MonoDevelop “死亡”的时间。人们确实在 Mac App Store (iirc) 上发布了 MonoMac 应用程序,但 Xamarin 宁愿您今天购买许可证来执行此操作,而开源 (?) MonoMac Packager 的支持确实消失了,被 Xamarin.Mac 吞并。我相信要点是 Xamarin 了解他们是从开源 MonoMac 开始的,如果他们停止支持 Mac 开发(也就是说,如果他们降低了我们对 Xamarin 之前的期望的有用性),就会有一些阻力。
编辑:更多的历史链接。Cocoa#于 2004 年发布并持续开发到 2008 年,早于并且,Miguel 说,它为 MonoMac 的创建提供了信息。CocoaSharp 也与 Mono 一起发布了一段时间。我知道我有时会把 MonoMac 和 Cocoa# 混为一谈。MonoMac似乎诞生于 2010 年左右,在MonoTouch 之后。
Xamarin 让我们将 MonoMac 保留在他们最新的 Xamarin Studio 中,并继续受益于他们对核心 Mac 功能集执行的升级,这真是太好了。
所以Xamarin.Mac 是建立在 MonoMac 之上的,从某种意义上说不免得到支持。唯一的问题是 Xamarin 允许我们使用“不受支持的”MonoMac 项目构建所需的大型应用程序多长时间,而不是用类似于 X.iOS 和 X.Android 的“Starter”版本替换 MonoMac。我希望他们继续做正确的事,而不是剥夺原始开源 Mono 社区赋予我们的能力:让任何人都可以使用 C# 和原生 Mac UI 构建功能齐全的应用程序。
这感觉有点漫无边际,但我希望它有所帮助。MonoMac 存在,Xamarin.Mac 是它的超集。同样,购买 Xamarin.Mac 的最大优势是应用程序捆绑,但还有一些额外的程序集(James 在下面列出了一些:“GameKit、StoreKit 等”),并且正如 James 还指出的那样,64 位支持。Xamarin 在营销这些好处方面做得并不好。
但是,您的问题的底线是,您不应该觉得 MonoMac 是二等公民。实际上,您现在处于一个非常好的位置,可以根据需要构建尽可能复杂的 Mac-native [ish] 应用程序。
正如@Lex 所说:
2016 年 3 月 31 日,Microsoft/Xamarin 公布了 Xamarin SDK 的开源计划,并于 2016 年 4 月 27 日在 GitHub 上发布了代码,http://open.xamarin.com。所以现在你应该完全放弃 MonoMac 并拥抱 Xamarin.Mac。
然后 MonoMac 已过时(支持Xamarin.Mac/iOS,它也是开源和免费的)。Miguel 在邮件列表中已经确认了这一点。
更新:
我认为确实有 3 件事可以与 C# Mac 开发进行比较。我们有 MonoMac、Xamarin.Mac Classic 和 Xamarin.Mac Unified。它们都是不同的,但 Classic vs Unified 可能是开发人员最大的不同。
MonoMac 最初是在周末黑客马拉松上创建的一个开源项目。不久之后,Xamarin 提供了 MonoMac 的超集,称为 Xamarin.Mac。它包含更广泛的 API(GameKit、StoreKit 等),这些 API 在 MonoMac 中不可用。Xamarin.Mac 还为您提供 Mono 的商业许可,并允许您发布到 Mac AppStore。如果您对 MonoMac 感兴趣,您可以从 GitHub 上获取存储库并开始贡献该项目。
在过去的 18 个月里,我们一直致力于统一我们的 iOS 和 Mac 产品内核,同时修复一些问题(方法和属性的拼写错误等……)并添加 64 位支持。这个新版本的 Xamarin.Mac 还包含一个新的垃圾收集器和一些新的数据类型。我们这样做的原因既是为了允许在 Xamarin.iOS 和 Xamarin.Mac 项目之间共享更多代码,也是为了支持 Apple 发布的仅 64 位的最新 API。
举个例子,如果你想在 Mac 上使用 MapKit,你需要使用 Unified API,因为这是一个仅限 64 位的 API。
如果您现在使用 MonoMac 开发您的应用程序,如果您想在 Mac App Store 上发布您的应用程序,您将可以轻松升级到统一 API。您还应该查看您认为需要哪些 API。作为一般经验法则,10.10 中的任何新 API 都可能需要新的统一 API,因此需要 Xamarin.Mac。
我不认为这两个答案涵盖了 MonoMac 和 Xamarin.Mac 的所有历史,所以作为.NET/Mono/Xamarin Timeline的作者,我想提出另一个答案。
MonoMac 是在 Mono 人完成 MonoTouch 的主要开发之后诞生的,并希望将同样的技术带入桌面。Miguel 发布了有关其 1.0 版本的博客。因此,它作为开源发布,作为 Mono 的一部分。
Xamarin 的推出显着改变了项目的运行方式。显然 MonoTouch 和 Mono for Android 成为了旗舰产品,而 MonoMac 则是另一个潜在的产品。因此,在 2012 年 12 月 12 日,Xamarin.Mac 被构建为加入 Xamarin.iOS 和 Xamarin.Android。商业 Xamarin 品牌与开源 Mono 品牌划清界限。从那时起,MonoMac 的开发速度放缓,更多的资源转移到了 Xamarin.Mac。
更具有历史意义的事件发生在 2014 年,当时 Apple 对 64 位应用程序提出了要求,iOS 和 Mac 应用程序工具供应商都必须满足这一要求。Xamarin在其团队博客上明确宣布 Xamarin.iOS 和 Xamarin.Mac 使用统一 API 支持完整的 64 位。由于 MonoMac 始终是 32 位的,因此在我看来,那篇博文表明 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 Studio 拥抱 Xamarin.Mac。我不确定它的社区版有什么限制。