编译基于C#的Windows(WinForms App)应用程序以在Mac OS High Sierra或Mojave上运行

时间:2018-11-25 10:33:18

标签: c# windows macos

我已经在Windows中使用C#构建了一个(Windows Forms App)应用程序。现在,我希望将整个项目/应用程序定位到mac OS,而不更改应用程序。有什么简单的方法可以实现吗?我不想在MAC上从头开始重建整个应用程序。我不想在MAC上使用虚拟机...我有Visual Stuido 2017和成对的MAC。但是,我在这里迷路了。

2 个答案:

答案 0 :(得分:1)

; TLDR Mono,使用WinFormsMonoDevelop IDE进行开发。

.NET Framework 是完整的实现,包括所有内容,但只能在Windows上运行。

.NET Core 是.Net框架的较新的OpenSource实现,但不包括WPF / WinForms-因为它们严重依赖DirectX / GDI,因此实际上仅使它们成为Windows。

Xamarin 。基于Mono框架的Xamarin进一步向iOS和Android分支。有一个Xamarin Mac,但它支持与Mono相同的基于GTK#的UI工具包。还有一个WinForms等效的UI工具包,称为Xamarin Forms,但它仅可移动(iOS,Android和Universal Windows Platform)

单声道。 Mono是.Net框架的开源实现,默认情况下,UI使用GTK#。在所有Windows,Linux,macOS上都能正常运行。在包括Windows在内的所有操作系统上使用GTK#作为基础UI工具包。

什么是跨平台??有一个称为 .NET标准库的基类库的子集-以及编译器平台,只有.Net的这些子集是真正的跨平台。

总而言之, 但是,Mono在Linux和macOS上均支持Windows Forms。 除了一些特殊情况外,它效果很好。 但是,UI外观仅Windows。就像在WINE下运行Windows应用程序一样。默认的Mono IDE为MonoDevelop

Xamarin Mac非常适合您想从头开始编写新应用程序的情况,因为Xamarin Mac为您提供了完整的macOS SDK并提供了自己的IDE(Xamarin Studio)。

不过,根据您的情况,Mono是最佳选择。安装了mono之后,您甚至可以尝试从终端以mono appName的身份运行当前应用。即使路径和其他资源损坏,它也应该呈现UI。

答案 1 :(得分:0)

您必须使用.NET Core(而不是.NET Framework)才能在与Windows不同的操作系统上正确运行应用程序。

Differences between platforms explained