繁体   English   中英

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

[英]Compile C# based Windows (WinForms App) application to run on Mac OS High Sierra or Mojave

我在 Windows 上用 C# 构建了一个(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 框架的开源实现,默认使用 GTK# 作为 UI。 在所有 Windows、Linux、macOS 上运行良好。 在包括 Windows 在内的所有操作系统上使用 GTK# 作为底层 UI 工具包。

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

总而言之,Mono 确实支持 Linux 和 macOS 上的Windows 窗体 除了一些极端情况,它工作得很好。 但是,UI 外观和感觉仅适用于 Windows。 这就像在 WINE 下运行 Windows 应用程序。 默认 Mono IDE 是MonoDevelop

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

不过,在您的情况下,Mono 是最佳选择。 安装 mono 后,您甚至可以尝试从终端以mono appName运行您当前的应用程序。 即使路径和其他资源被破坏,它也应该呈现 UI。

2021 年更新

WPF 和 WinForms 现在是开源的并且是 .Net Core 的一部分(现在被称为.Net 。Core 已在名称中删除)。 以前的经典 .Net 现在称为 .Net 框架。 新的 WPF/WinForms 功能增强仅适用于 .Net。 尽管这些仍然只是 Windows 并且将保持如此。

Avalonia UI 框架Uno 平台是较新的基于 .Net Core (AKA .Net) 的跨平台解决方案。 两者都使用 XAML。 Avalonia 更像是 WPF,而 Uno 则试图成为跨平台的 UWP。

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

平台之间的差异解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM