MonoMac已经被弃用了吗?

7

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

AppKit的新Lion和Mountain Lion API

而且在Xamarin Studio中,MonoMac处于“不受支持”的状态(我想下载Mono Develop,但页面会自动重定向到Xamarin Studio)。

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


考虑修改你的已接受答案,跟上时代的步伐吧 ;) - ympostor
4个回答

5
区别没有很好地传达; {{link1:他们甚至在论坛上也没有做得很好}}。而且{{link2:MonoMac}}去年并不是特别活跃。
但是快速的答案是MonoMac还在继续。 “不受支持”只意味着您尚未购买Xamarin许可证,因此不要指望Xamarin客户支持在出现问题时提供帮助。 但是在Xamarin.Mac出现之前,您已经处于这种情况了。 请注意,Mono qua开源运行时仍在积极开发中。例如,您仍然可以{{link3:下载Linux的MonoDevelop}},它有点类似于Xamarin销售许可证之前的MonoMac。 MonoDevelop本身仍然{{link4:非常活跃}},截至本文撰写时,最近13天内进行了提交。 因此,Mono仍然存在,并且实际上是所有Xamarin编程产品的子集。
Mono-on-Mac有两个不同之处,您可以使用MonoMac的AppKit等程序集,并且可以使用Xamarin Studio的活动版本进行开发,而不是受限于例如Gtk#和MonoDevelop。这些都是非常好的事情。
但它更好。 Xamarin.Mac的“入门版”相当于MonoMac。 Xamarin支持的其他两个平台的“入门版”-- Xamarin.iOS和Xamarin.Android--有构建限制,即在构建应用程序(包括链接)之前,您需要购买许可证才能构建多大的应用程序。 MonoMac则不然。因此,通过Xamarin Studio的MonoMac是一种“类固醇入门版”。在MonoMac上,您可以制作任何大小的应用程序并将其发布到外部。
问题是什么?MonoMac项目基本上假定您的用户已经在其Mac上安装了Mono运行时,并且将通过命令行使用mono命令打开您的程序集--就像您必须使用“旧”的MonoMac一样。如果您想要针对传统的最终用户,则不太流畅。您可以使用BockBuild来帮助执行类似于Xamarin.Mac的应用程序捆绑而无需许可证(这是Banshee使用BockBuild的方式),以创建自包含的应用程序包,但我还不确定BockBuild的通用性如何。
然而,在另外两个“入门版”中,您确实会得到一个漂亮的、准备好部署的应用程序包。也就是说,如果您支付了99美元成为苹果开发者,并在Starter上制作了一个小型的Xamarin.iOS应用程序,您可以立即将该应用程序部署到iOS应用程序商店,而无需支付Xamarin.iOS许可证费用。因此,在这个意义上,MonoMac比其他地方的入门版更糟糕。 历史揣测(我有些困惑):就在MonoMac Packager出现的时候,Xamarin.Mac发布了,而且通过MonoDevelop的MonoMac“已死”。人们确实将MonoMac应用程序发布到了Mac App Store上(如果我没记错的话),但是如今Xamarin希望您购买许可证来完成这项工作,开源(?)的MonoMac Packager的支持确实消失了,被Xamarin.Mac吞噬了。我相信要点在于Xamarin理解他们起步于开源的MonoMac,如果他们停止支持Mac开发(即,如果他们从我们使用Xamarin之前的预期中降低其有用性),就会有一些反弹。 编辑:更多历史链接。 Cocoa# 发布于2004年,一直开发到2008年,在 MonoMac 的创建之前,Miguel 说,这启发了 MonoMac 的创建。CocoaSharp 也曾一度与 Mono 配合使用。我知道我有时会把 MonoMac 和 Cocoa# 混为一谈。MonoMac 似乎是在 2010 年左右诞生的, MonoTouch 之后。

Xamarin 公司真好,让我们可以在他们最新的 Xamarin Studio 中继续使用 MonoMac,并继续从他们对核心 Mac 功能集的升级中受益。

所以,Xamarin.Mac是建立在MonoMac之上的,并且在某种程度上不得不得到支持。唯一的问题是,Xamarin让我们使用“不受支持”的MonoMac项目构建尽可能大的应用程序的时间有多长,而不是用类似于X.iOS和X.Android的“入门版”替换MonoMac。我希望他们会继续做正确的事情,不会剥夺原始开源Mono社区给我们的能力:任何人都可以使用C#构建具有本地Mac UI的全功能应用程序。
这感觉有点冗长,但我希望它有所帮助。MonoMac存在,而Xamarin.Mac是其超集。再次强调购买Xamarin.Mac的最大优势是应用程序捆绑,但还有一些额外的程序集(James在下面列出了一些:“GameKit,StoreKit等等”),正如James也指出的那样,还支持64位。 Xamarin没有很好地推销这些好处。
然而,对于你的问题,底线是你不应该觉得MonoMac是二等公民。实际上,你现在处于一个相当不错的位置,可以构建尽可能复杂的Mac本地[ish]应用程序。

注释水印告诉我要避免像“谢谢”这样的评论,但我必须感谢您提供详细的解释。 - Damn Vegetables
有了新的统一API,Xamarin.Mac与MonoMac大不相同。现在它更接近于Xamarin.iOS。如果这个问题是6个月前被问到的,我会说你的回答是完美的。 - Mike James
我不是给你的帖子点踩的人,但显然有些事情你忽略了,比如统一 API 的公告。此外,我认为 MonoMac 应该被视为已死,应该支持 Xamarin.Mac。 - Lex Li
@LexLi Xamarin.Mac 是否已经停止使用 MonoMac 构建?如果是这样,那肯定很有趣,如果您有 411 的话,可以将其作为新答案添加。正如 Mike James 所提到的,我还没有接触过 64 位,因为这个问题特别涉及到 MonoMac 被弃用。我认为它并没有被废弃,而是“隐藏在”Xam.Mac下面。 我仍然编写 MonoMac 应用程序,例如。 Lex,在其他位置你已经给出了关于 Xamarin 的好答案 - 让我鼓励你在这里添加一个答案!这个问题已经超过一年了,如果您有更好的信息,可以提供。 - ruffin
对于最近的投票者,同样的话送给你们——告诉我哪里不足,我可以改进答案!帮助我帮助你们。;^) - ruffin

4

正如@Lex所说:

2016年3月31日,Microsoft / Xamarin宣布了Xamarin SDK的开源计划,并于2016年4月27日在http://open.xamarin.com上发布了代码。现在您应该完全放弃MonoMac并采用Xamarin.Mac。

MonoMac已经过时了(优先使用Xamarin.Mac/iOS,这也是开源和免费的)。 Miguel在邮件列表中确认过这一点。


2
更新:
微软已经收购了Xamarin并使Xamarin.Mac成为开源软件。如果您想使用C#构建Mac应用程序,那么您应该使用Xamarin.Mac。由于Xam.Mac对所有人都免费开放,MonoMac将不会被积极开发。
我认为有三个要比较的东西与C# Mac开发相关。我们有MonoMac、Xamarin.Mac Classic和Xamarin.Mac Unified。它们都不同,但是Classic与Unified可能是开发人员最大的区别。
MonoMac起初是在周末黑客马拉松上创建的一个开源项目。过了一段时间,Xamarin提供了一个超集,称为Xamarin.Mac。它包含了更广泛的API(GameKit、StoreKit等),这些API在MonoMac中不可用。Xamarin.Mac还为您提供了Mono的商业许可,并允许您发布到Mac AppStore。如果您对MonoMac感兴趣,可以从GitHub获取存储库并开始贡献该项目。
在过去的18个月中,我们一直致力于统一我们的iOS和Mac产品核心,同时修复了一些问题(例如方法和属性的拼写错误等),并添加了64位支持。这个新版本的Xamarin.Mac还包含了一个新的垃圾回收器和一些新的数据类型。我们这样做的原因既是为了在Xamarin.iOS和Xamarin.Mac项目之间实现更多的代码共享,也是为了支持苹果发布的最新API,这些API只支持64位。
举个例子,如果您想在Mac上使用MapKit,您需要使用统一API,因为这是一个仅支持64位的API。
如果您今天使用MonoMac开发应用程序,如果您想在Mac App Store上发布您的应用程序,您将有一个简单的升级过程到统一API。您还应该查看您认为您需要的API。作为一个经验法则,任何10.10中的新API都可能需要新的统一API,因此需要使用Xamarin.Mac。

谢谢,Mike James,Xamarin员工! 但问题不是 Xamarin.Mac 有什么新功能,而是 MonoMac 的现状是什么。如果“Xamarin.Mac 2014”改变了“不支持的 MonoMac 项目”的操作方式,请告诉我们两者之间的区别!我喜欢你们正在做的事情,但正如上面链接的讨论(你也参与了),Xamarin并没有清晰地阐明MonoMac的状态。请告诉我是否有对MonoMac项目的“重大变革”,以及它们是什么。看,我真的很喜欢你们,但你们的回答有点像在推销。 - ruffin
1
我正在考虑将我的现有WPF应用程序移植到OS X,因此我并不太关心统一API或Xamarin.iOS。 - Damn Vegetables
你说得对,MonoMac是不受支持的,但这是因为它是一个开源项目。我已经更新了我的回答,提供了更多关于Xamarin.Mac的信息。将Xamarin.Mac与MonoMac进行比较并不容易,因为Xamarin.Mac既有经典API(非常类似于MonoMac),也有统一API,后者是完全不同的东西。我们有很多关于我们的统一API如何不同的文档,所以我不会列出所有内容。 - Mike James
@Michael -- 抱歉,我特别询问的不是关于 X.Mac 的问题,而是关于 MonoMac 是否作为一种类似于“Starter”的 X.Mac 等效品(因为那里没有 Starter 许可证)是否会发生变化。你们让我们使用 Xamarin Studio 进行 MonoMac 开发,并且如果我们想要,可以轻松过渡到 X.Mac 开发。然而,如果在Xam Studio中开发MonoMac的能力将要改变,最好尽早知道。更重要的是,如果 X.Mac 将停止成为 MonoMac 的直接“超集”,那也很重要。 - ruffin

0

我认为这两个答案并没有涵盖MonoMac和Xamarin.Mac的全部历史,因此作为.NET/Mono/Xamarin时间轴的作者,我想提出另一个答案。

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年发生了一件更具历史意义的事件,苹果公司要求64位应用程序,iOS和Mac应用程序工具供应商都必须满足。Xamarin在其团队博客上明确宣布支持使用统一API的完整64位的Xamarin.iOS和Xamarin.Mac链接。由于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。虽然我不确定社区版中的限制是什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接