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

使用Mono将C#.NET应用程序移植到OS X?,c#,.net,winforms,macos,mono,C#,.net,Winforms,Macos,Mono,好的,伙计们,我正在写一个我想跨平台的应用程序。直到最近,我一直在尝试用C#在Silverlight中实现这一点,因为它也在OS X上运行,但由于我对C#相当生疏,除了对Silverlight是新手之外,我还经常头痛。这主要源于打算在浏览器中运行的应用程序所附带的限制,当从my development Server运行与直接从文件://等运行时,会出现不同的运行问题 我宁愿完全放弃整个OSX支持的想法,也不愿完全重写OSX的应用程序,尤其是因为我完全没有为它编写应用程序的经验。我希望能够使用Vi

好的,伙计们,我正在写一个我想跨平台的应用程序。直到最近,我一直在尝试用C#在Silverlight中实现这一点,因为它也在OS X上运行,但由于我对C#相当生疏,除了对Silverlight是新手之外,我还经常头痛。这主要源于打算在浏览器中运行的应用程序所附带的限制,当从my development Server运行与直接从文件://等运行时,会出现不同的运行问题

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

使用Mono将.NET应用程序移植到OS X有多困难?我的应用程序非常简单,表单或任何东西都没有异国情调,因此我不得不假设Mono的WinForms实现支持它

关于如何使用Mono移植应用程序,有什么好的资源吗?或者,也许我忽略了全部要点,它只允许您在OS X上运行.NET应用程序,而我不需要为移植而烦恼?

请原谅我对这个问题的完全无知,我是在10分钟前在Silverlight遇到另一个恼人的限制后才开始考虑走这条路线的


我将是第一个承认我对这个问题一无所知的人,所以请温柔点:)

有几件事你应该牢记在心

  • 您必须移植平台相关UI代码的任何用法
  • 不使用平台相关的操作系统调用(win32 api)
  • 不要使用“异国情调”库(如工作流,ef)
  • 一般来说:将这些代码的依赖项抽象出来,这样您就可以轻松地用特定于mono的库替换它们。(一个可建议的模式是MVVM)

  • 有一个叫做的工具可以帮你解决所有这些问题。然而,对结果持怀疑态度。在任何情况下,都可以试试。

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

    然而,这是永远不够的,因为您的应用程序在许多方面都是独一无二的

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


    如其他答案所述,您可能对MoMa感兴趣。
    随着MonoTouch(为iPhone编写c#)的成功,现在还有一个名为MonoMac的项目,在后台使用.net/mono时为OSX创建本机UI。Miguel de Icaza博客上的文章可能会让你感兴趣:

    除了已经说过的,考虑到Mono支持完整.NET功能的一个子集,我可能更愿意在Mono上开发,然后在Microsoft的运行时上测试,如果目标是在这两个平台上运行的话。否则,您可能会冒着无意中使用Mono中不可用的某些功能的风险,在您着手进行跨平台构建和测试时,不得不将大量代码扔出窗口。

    这可能会有所帮助:如果您想编写具有适当Cocoa接口的程序,你也可以看看MonoMac MoMA现在已经过时了,但是有一个名为Visual Studio的扩展,它将分析你的程序集是否可以移植到许多平台,包括Mono。最后两句话在大多数情况下是无效的:)除非你在Mono上运行应用程序,否则你永远不会知道其中的一些问题。MoMA是一个很好的工具,但它不是银弹。