是否有C#/ .NET的跨平台GUI框架?

Jay*_* R. 10 .net c# user-interface cross-platform

让我们说只是为了它的乐趣,我决定不再用Java编写桌面应用程序,而是想切换到使用C#.我希望能够构建一个将在某些主流Linux发行版上运行的应用程序,以及最近发布的MS Windows.它将有一个GUI组件.

在Java中,我可以构建一个使用Swing的应用程序.一旦我有它工作,我可以将该jar文件从Windows复制到Linux,反之亦然,这取决于我开发它的位置.它通常会运行java -jar myapp.jar.

在C#中可以这样做吗?在C#中是否有与Swing或AWT相同的功能?

Cur*_*tis 21

还有Eto.Forms(在github上),它是WPF,WinForms,GTKMonoMac/Cocoa之上的抽象层- 因此您可以在所有平台上获得本机UI,而无需为每个平台重新实现.您不必受最低公分母的影响,因为您可以为每个平台实现细节(如果需要,但不是必需的).

它的优势在于它是纯.NET并且仅依赖于操作系统提供的依赖性,而不是使用GTK或WxWidgets,您必须为各种平台捆绑本机二进制文件.


Joe*_*orn 13

可能GTK#将是最接近的.

我知道其他人说单音,但那不太对..Net是单声道,因为微软的Java VM是Sun的Java运行时.mono并不像Swing那样处于同一个概念空间.为此,GTK#是一个更接近的匹配.

  • 我知道你在说什么,在他的问题中他询问了AWT或Swing - 但我认为他真正要问的是"我怎样才能编写跨平台的C#应用​​程序?". (2认同)

Rob*_*Rob 5

我相信WinForms的很大一部分是在Mono中实现的.你需要在Linux下安装Mono.但是,您可能遇到兼容性问题,因为Mono不是Microsoft的努力,也不是他们的正式支持.

  • 是的,但这是一个非常*良好的社区努力,当我做一些完全荒谬的事情时,我只看到兼容性问题(评论太短暂无法描述:D).正常的桌面编程通常都很好. (3认同)
  • 据我所知,所有WinForms 2.0都已实现. (2认同)

Gre*_*ell 5

此页面包含Mono支持的GUI工具包列表,包括每个工具包的优缺点.正如其他人所说,WinForms,GTK#和wxNet都是可行的选择.


Zac*_*ann 5

微软最近刚刚推出了.NET MAUI,它基于 Xamarian 构建并支持 .NET core。

用他们的话来说:

当我们考虑在统一的 .NET 中构建设备应用程序时,我们看到许多设备跨多个平台使用,从 Android 和 iOS 到 Windows 和 macOS。为了满足这一需求,我们很高兴地宣布推出一个新的一流 UI 框架来实现这一目标:.NET 多平台应用程序 UI,亲切地称为 .NET MAUI。

.NET MAUI 简化了 .NET 开发人员的选择,提供支持所有现代工作负载的单一堆栈:Android、iOS、macOS 和 Windows。

尽管他们没有指定 Linux,但根据MA​​UI Github Repo,社区开发了对其的支持。

  • 更准确的说法是微软最近“宣布”.NET MAUI,而不是“推出”。预计 2021 年 11 月之前不会全面发布:https://github.com/dotnet/maui/wiki/Roadmap (4认同)

小智 2

您可以尝试WxWidgets。它支持 C# 以及许多其他语言,并且是跨平台的。唯一的缺点是每个平台都要重新编译。或者,您可以尝试 Mono,它非常好,但要注意存在一些兼容性问题。C# 应用程序没有预定义的“随处运行”文件,但就像 Java 中的 jar 一样,如果您想确保兼容性,最好的选择是针对每个平台重新编译。