我已经使用 C# 在 Windows 上构建了一个(Windows 窗体应用程序)应用程序。现在,我想在不更改应用程序的情况下将整个项目/应用程序定位到 mac OS。有什么简单的方法可以实现吗?我不想在 MAC 上从头开始重建整个应用程序。我不想在 MAC 上使用虚拟机...我有 Visual Stuido 2017 和配对的 MAC。但是,我在这里迷路了。
最佳答案
;TLDR Mono , 使用 WinForms和 MonoDevelop用于开发的 IDE。
.NET Framework 是包含所有内容但仅在 Windows 上运行的完整实现。
.NET Core 是 .Net 框架的较新开源实现,但不包括 WPF/WinForms - 因为它们严重依赖 DirectX/GDI,本质上使它们仅适用于 Windows。
赛马林。基于 Mono 框架的 Xamarin 更倾向于 iOS 和 Android。有一个 Xamarin Mac,但它支持与 Mono 相同的基于 GTK# 的 UI 工具包。有一个 WinForms 等效的 UI 工具包,也称为 Xamarin Forms。但它仅适用于移动设备(iOS、Android 和通用 Windows 平台)
单声道。 Mono 是 .Net 框架的开源实现,UI 默认使用 GTK#。在所有 Windows、Linux、macOS 上运行良好。在包括 Windows 在内的所有操作系统上使用 GTK# 作为底层 UI 工具包。
什么是跨平台? 基类库有一个子集,称为 .NET 标准库 - 以及编译器平台,只有 .Net 的这些子集是真正跨平台。
总结一下, 然而,Mono 确实支持 Windows Forms在 Linux 和 macOS 上。 除了一些极端情况外,它工作得很好。 但是,UI 外观和感觉仅限于 Windows。这就像在 WINE 下运行 Windows 应用程序一样。默认的 Mono IDE 是 MonoDevelop .
Xamarin Mac如果您想从头开始编写新应用程序,这非常好,因为 Xamarin Mac 向您公开了完整的 macOS SDK 并提供了自己的 IDE (Xamarin Studio)。
但在您的情况下,Mono 是最佳选择。安装单声道后,您甚至可以尝试从终端以 mono appName
运行您当前的应用程序。即使路径和其他资源损坏,它也应该呈现 UI。
2021 年更新
WPF 和 WinForms 现在是开源的,并且是 .Net Core 的一部分(现在称为 .Net。Core 已从名称中删除)。以前的经典.Net,现在叫.Net framework。新的 WPF/WinForms 功能增强功能仅适用于 .Net。尽管这些仍然仅适用于 Windows,而且会一直如此。
Avalonia UI Framework和 Uno Platform是更新的基于 .Net Core (AKA .Net) 的跨平台解决方案。两者都使用 XAML。 Avalonia 更像是 WPF,而 Uno 则试图成为跨平台的 UWP。
关于c# - 编译基于 C# 的 Windows (WinForms App) 应用程序以在 Mac OS High Sierra 或 Mojave 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53466621/