【问题标题】:Can we run a C#/WPF application on Mac OS X?我们可以在 Mac OS X 上运行 C#/WPF 应用程序吗?
【发布时间】:2010-10-09 12:29:15
【问题描述】:

我销售一个 C#/WPF 应用程序(目前针对 .net 3.0),人们一直要求我提供 Mac 版本。

该应用程序是具有良好 GUI 的时间跟踪应用程序,时间跟踪应用程序中没有那么多业务逻辑,因此大多数应用程序都是 GUI - 仅重写 GUI 就相当于重写整个应用程序

我没有资源来重写应用程序或维护两个不同的代码库,所以我需要一种在 Mac 上运行相同代码的方法(我知道我必须调试和修改代码,我意思是我只能支持一个代码库,我不能将项目拆分为不同的 Mac 和 Windows 项目——我只是没有时间处理两个项目)。

将应用程序移植到跨平台 UI 库、不同的编程语言或 Silverlight 都无关紧要 - 这将花费太多时间,我认为通过这次投资新功能我会获得更多销量。

有谁知道可以在 Mac 上运行或移植 C#/WPF 的工具吗?

【问题讨论】:

    标签: c# wpf macos porting


    【解决方案1】:

    您绝对无法在 Mac 上运行成熟的 WPF 应用程序。我什至不确定这在 Parallels 中是否可行。您可以做的最好的事情是使用 Silverlight,它以前被命名为“WPF/E”并且可以在 Macintosh 上运行。

    【讨论】:

    • 呃 Parallels 是一个虚拟机...任何在 windows 上运行的东西都会在它运行时在其上运行... windows。
    【解决方案2】:

    我们也有类似的情况。我们有一个可用的 Windows 项目,想要一个 Mac 版本。

    我们的产品分为两部分,一个是 .Net 应用程序,另一个是 Director 投影仪应用程序。

    Director 应用程序应该很简单吧,跨平台等等?好吧,不,它很少那么容易,我们最终得到了两个版本的 Director 源文件。

    运行 .Net 应用程序需要使用 Mono 作为底层引擎,这对我们来说效果很好,因为我们实际上只是在处理数字运算字节数组。另一方面,我们不得不用 Cocoa 重写 UI。我们的成本几乎与制作 Windows 版本一样多,因为我们还必须边学习边学习 Mac 的所有东西。

    从那时起,我们只更新了 Windows 版本。

    【讨论】:

    • 在我看来,这对新开发者来说是一个很好的例子。选择可以在多个平台上使用的工具。否则,一旦需求发生变化并且高管们也希望产品在 Mac 或 Linux 上运行,您就会发现自己陷入困境。
    【解决方案3】:

    我们遇到了类似的问题。我们在 Silverlight 3 中编写了一个 Mac 版本(它支持很多 WPF .NET 东西)。它是沙盒的,但如果这不是问题,你可以做一些不错的事情。我们的代码库现在位于 WPF 和 Silverlight 3 上,并且是相同的,当我们编译它时会生成 SL3 和桌面应用程序。

    【讨论】:

    • 谢谢,这听起来很有可能(当我问这个问题时,silverlight 3 不存在),你在两个平台上使用相同的 xaml 和 cs 文件吗?
    【解决方案4】:

    您可以使用 Parallels。我有我们用 C# 和 WPF 编写的办公软件,人们一直在 Parallels 下的 Mac 上使用它。

    进一步说明,Parallels 可让您同时运行 Windows 应用程序和 Mac OSX 应用程序,这些应用程序在 Mac 桌面上它们自己的窗口中可见。它还允许在 Mac 和 Windows 应用程序之间复制和粘贴以及拖放。

    【讨论】:

      【解决方案5】:

      您想要一个新功能(支持一个完全不同的平台)并且您不希望为此付出任何努力。抱歉,大部分时间都行不通。

      除了最基本的(本机).NET 单声道之外,我认为您不能在 MacOSX 上本机运行 WPF 应用程序。

      如果您认为通过吸引 Mac 用户可以赚更多钱。您可以考虑使用其他演示方法。由于您当前的“投资”,我会说尝试 Silverlight(是的,我读过您关于不这样做的咆哮)。另一种选择可能是 Adob​​e AIR / Flex。

      如果您以这种方式移植您的应用程序。您可以维护一个代码库......一个在两个平台上运行的代码库。

      如果您希望将更多时间花在当前代码库中的新功能上:请忽略 Mac 用户。

      【讨论】:

        【解决方案6】:

        您可以试试 Nevron Open Vision。它集成在 WPF、WinForms、Silverlight 和 MonoMac、Xamarin.Mac 项目中。这不像在 Mac 上运行 WPF 应用程序,而是需要您在 NOV 平台上重新编码您的应用程序。但是,一旦您这样做了,您的应用程序(或模块)将通过一个代码库在所有这些平台上运行。这种方法工作的一个很好的例子是 Nevron Writer(Nevron Office 的一部分)。它通过 100% 单一代码库在 Windows、Silverlight 和 Mac 上运行。

        [披露:我为 Nevron 工作]

        【讨论】:

        • 我下载了demo....我们会看到,但是目前似乎没有Visual Designer + XAML支持,看来一切都必须在C#代码中完成(即,整个 GUI 必须通过 C# 代码创建,不能使用可视化设计器)
        【解决方案7】:

        这是不可能的。但是由于您的 UI 在 WPF 中,您可以做的是将 XAML 转换为其他内容 - 例如 GTK#。当然,如果您像我一样使用大量 .NET 3.5 功能,那对您帮助不大。

        还有一个理由让您的用户界面一开始就使用简单明了的 XML。

        【讨论】:

          【解决方案8】:

          实际上,有一个 CrossOver 适合您。其他从程序员的角度回答观点的人。如果我是你,我会安装 CrossOver,然后在 CrossOver 中安装 .NET 3.5,然后愉快地运行 WPF 软件。

          http://www.codeweavers.com/products/cxmac/

          或者,如果您更喜欢免费(但更难)的解决方案,请尝试 wine。

          http://davidbaumgold.com/tutorials/wine-mac/

          【讨论】:

          • 从客户的角度来看这是一个好主意 - 我不知道我的软件是否在 CrossOver 下运行,但我知道有些人在 Parallels 下运行我的软件 - 但是 - 来自软件供应商观点(尤其是使用廉价软件)我不能只在客户的计算机上安装 CrossOver(尤其是当 CrossOver Pro 比我的软件更贵时)
          • 只是想澄清 Parallels/VMWare 和 Wine/CrossOver 之间的区别。 Parallels 或 VMWare 是可以启动 Windows 的虚拟硬件模拟器。他们模拟硬件。您需要启动 Windows(也需要 Windows 许可证),然后在运行 Windows 的仿真硬件上运行您的软件。 Wine/Cross over 是关于在 Mac/Linux 上重写 Windows 环境的东西。它为您的程序提供了您的程序对 Windows 操作系统所期望的一切。并且您的程序以本机速度运行,无需启动 Windows 也不需要它的许可证。
          • 你怎么能建议 Wine 作为答案而不做任何研究?看看这里,您会看到 .NET 3.0 或更高版本仍然无法在 Wine 上运行(2011 年 5 月),您在一年前回复:appdb.winehq.org/…
          • 另外,你怎么能建议 CrossOver 作为答案而不做研究?看看这里,CrossOver 甚至不支持 .NET 2.0(截至 2011 年 5 月),正如您在一年前回复的那样:codeweavers.com/compatibility/search/?name=.net+framework
          • 我从未见过那些中间层的模拟器能够正常且完整地工作。甚至像 Parallels 或 VMWare 这样的整个硬件模拟器有时也会因为未知的不兼容而失败。
          【解决方案9】:

          另一个商业解决方案是 NoesisGUI(年总收入guide for migration from WPF。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-22
            • 2021-05-24
            • 2020-04-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多