使用Mono将C#.NET应用程序移植到OS X?

好吧,伙计们,我正在编写一个我想要跨平台的应用程序。 直到最近,我一直在尝试使用C#在Silverlight中执行此操作,因为它也可以在OS X上运行,但是我对C#相当生疏,除了是Silverlight的新手,我在头痛后遇到了头痛。 其中大部分源于一个旨在在浏览器中运行的应用程序所带来的限制,当从我的开发服务器运行时直接从文件://等运行时,它的运行方式不同。

我宁愿完全放弃整个OS X支持的想法,而不是完全重写OS X的应用程序,特别是因为我完全没有为它编写的经验。 我希望能够做的是使用Visual Studio for Windows在C#.NET中编写常规应用程序,然后使用Mono轻松将其移植到OS X.

使用Mono将.NET应用程序带到OS X有多难? 我的应用程序非常简单,表单或任何东西都没有任何异国情调,所以我必须假设它在Mono的WinForms实现中得到支持。

关于如何使用Mono移植应用程序有什么好的资源吗? 或者,也许,我错过了整点,它只是让你在OS X上运行.NET应用程序,我不需要打扰移植?

原谅我对这个问题一无所知,我只是在10分钟前开始考虑在Silverlight中遇到另一个烦人的限制之后走这条路。

我是第一个承认我不知道我的屁股关于这个问题的人,所以要温柔…… 🙂

您可能对MonoMac感兴趣的其他答案中提到的MoMa公寓。 随着MonoTouch的成功(为iPhone编写c#),现在还有一个名为MonoMac的项目,用于在后台使用.net / mono时为OSX创建本机UI。 您可能会对此感兴趣http://www.mono-project.com/MonoMac ,关于Miguel de Icaza博客的文章: http : //tirania.org/blog/archive/2010/Apr-19.html

除了已经说过的,考虑到Mono支持完整.NETfunction的一个子集,我可能更喜欢在Mono上开发,然后针对Microsoft的运行时进行测试,如果目标是在这两者上运行。 否则,您将面临无意中使用Mono中无法使用的某些function的风险,并且在您进行跨平台构建和测试时必须从窗口中抛出大量代码。

Mono项目有一个专门介绍如何移植应用程序的页面,

http://mono-project.com/Guidelines:Application_Portability

但是,它永远不够,因为您的应用程序在很多方面都是独一无二的。

尝试移植它并在必要时向Mono人报告问题。 此外,如果您在公司工作,请考虑Mono的商业支持服务,

http://mono-project.com/Support

你应该记住几件事。

  1. 你必须移植任何平台unpdendent UI代码的使用
  2. 不要使用平台相关的OS调用(win32 api)
  3. 不要使用“异国情调”的图书馆(如工作流程,遗憾的是ef)
  4. 通常:抽象依赖于此类代码,因此您可以轻松地将它们替换为特定于单一的库。 (一个可建议的模式是MVVM)。

有一个名为MoMA的工具可以帮助您完成所有这些工作。 但是,用一粒盐取结果。 无论如何,试试吧。