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

标签 c# windows macos

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

最佳答案

;TLDR Mono , 使用 WinFormsMonoDevelop用于开发的 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 FrameworkUno 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/

相关文章:

c# - 为什么这种类型绑定(bind)有奇怪的行为?

linux - 我可以在 Windows 中用什么程序编写 .sh 文件

windows - 内置管理员帐户无权执行 Windows 10 中的某些操作

swift - 在 macOS 中将 WKWebView 内容转换为 PDF

python - 如何使用 python 向 mac 通知中心发送通知?

c# - 通过网络流访问sqlite数据库

c# - 实现 IXmlSerializable 时,如何只覆盖 ReadXml 或 WriteXml 而不是两者?

javascript - 构建时的 ionic 错误

javascript - Morris js 动态 ykeys

java - 在构造函数中引用现有文件时 Windows Java 文件锁定?