在 MacOS 中运行的 C# Windows 应用程序

Mad*_*ing -1 .net c# winforms c#-4.0

我是 C# Windows 窗体新手。现在我有一个上传 txt 文件并输出到 PDF 文件的项目。现在我需要使用 C# Windows 窗体来实现此目的,但我只是好奇如果我使用 C# Windows 窗体开发此应用程序,我是否能够在 MacOS 环境上安装该应用程序并像在 Windows 上使用它一样使用它?有什么需要考虑的吗?比如我是否需要安装某个软件包才能使其在 Mac 中运行,反之亦然?

Dai*_*Dai 5

我是 C# Windows 窗体新手。

你好!

现在我有一个上传 txt 文件并输出到 PDF 文件的项目。

继续...

现在我需要使用 C# windows 窗体来实现此目的

不,您不需要使用 WinForms 来简单地上传文本文件和下载 PDF。

但我只是好奇,如果我使用 C# Windows 表单开发这个应用程序,我是否能够在 MacOS 环境上安装该应用程序并像在 Windows 上使用它一样使用它?

你不能。WinForms 与 Microsoft Windows 操作系统紧密耦合(最大的线索就在名称中:Windows Forms。WinForms 是 Windows 默认窗口控件和小部件(也称为 User32 和 Common Controls)以及 OLE 的薄包装, COM + ActiveX 和其他以 Windows 为中心的 API。

有人尝试让 WinForms 的一个子集在其他操作系统上工作,但由于 WinForms 本质上不是跨平台的,因此您不会获得诸如对 macOS 主菜单的支持之类的功能,并且您的用户将能够知道您的程序不支持看起来和感觉就像一个本机程序。

有什么需要考虑的吗?比如我是否需要安装某个软件包才能使其在 Mac 中运行,反之亦然?

不,这是行不通的。

替代方法:

  • 使用 WinForms 制作您的应用程序System.Windows.Forms,并通过某种形式的应用程序远程处理将其提供给 macOS 用户:
    • 在使用 macOS 的远程桌面应用程序访问的 Windows 机器上运行它。
    • 在使用基于浏览器的 RDP 网关访问的 Windows 机器上运行它。
    • 在 Apple Mac 上运行的 Windows 虚拟机(Parallels Fusion、VirtualBox 等)中运行它。
  • 仅使用 .NET Core 中本机支持的跨平台功能:
    • 使用内置的http://localhostASP.NET Web 服务器创建您的应用程序,该服务器托管 GUI Web 应用程序,通过 Web 浏览器访问该应用程序,并与应用程序代码的其余部分进行交互。
    • 创建仅命令行应用程序。
    • 使用 .NET 等库制作文本模式 GUI 应用程序ncurses
  • 制作特定于平台的 GUI,同时仍然共享应用程序代码的其余部分(例如,使用 Xamarin 使用 .NET 中的 Cocoa、在 Windows 上使用 WinForms 或 WPF、在 Linux/BSD 上使用 GTK# 等)。

  • @jslowik .NET 5 运行时是跨平台的,是的 - 但 WinForms 只是 .NET 更大的类库的一个组件,它不包含在跨平台部分中。该博客文章没有提及 WinForms 在其他平台上可用的情况 - 我认为无论如何这是不可能的,因为例如“Control.Handle”之类的东西变得毫无意义。 (3认同)