Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#/.NET是否有跨平台的GUI框架?_C#_.net_User Interface_Cross Platform - Fatal编程技术网

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

C#/.NET是否有跨平台的GUI框架?,c#,.net,user-interface,cross-platform,C#,.net,User Interface,Cross Platform,让我们高兴地说,我决定不再用Java编写桌面应用程序,而是改用C#。我希望能够构建一个在主流Linux发行版和最新版本的MS Windows上运行的应用程序。它将有一个GUI组件 在Java中,我可以构建一个使用Swing的应用程序。一旦它工作起来,我就可以将jar文件从Windows复制到Linux,或者从Linux复制到Windows,这取决于我在哪里开发它。而且它通常会使用java-jarmyapp.jar运行 在C#中,有可能做到这一点吗?C#中是否有与Swing或AWT等效的功能?您可

让我们高兴地说,我决定不再用Java编写桌面应用程序,而是改用C#。我希望能够构建一个在主流Linux发行版和最新版本的MS Windows上运行的应用程序。它将有一个GUI组件

在Java中,我可以构建一个使用Swing的应用程序。一旦它工作起来,我就可以将jar文件从Windows复制到Linux,或者从Linux复制到Windows,这取决于我在哪里开发它。而且它通常会使用
java-jarmyapp.jar
运行


在C#中,有可能做到这一点吗?C#中是否有与Swing或AWT等效的功能?

您可以尝试。它支持C#和其他许多语言,并且是跨平台的。唯一的缺点是为每个平台重新编译。或者你也可以尝试Mono,这是非常好的,但要注意在兼容性问题上有一些障碍。C#应用程序还没有预定义的“run anywhere”文件,就像Java使用JAR一样,但如果你想确保兼容性,最好是为每个平台重新编译。

我见过的最接近的东西是Mono,尽管我相信它还不支持所有CLR库,但是它是跨平台的。

我相信WinForms的大部分是用Mono实现的。为此,您需要在Linux下安装Mono。不过,您可能会遇到兼容性问题,因为Mono不是微软的产品,也没有得到微软的正式支持。

可能是最接近的


我知道其他人也说过单核细胞增多症,但这并不完全正确。Net与mono的关系就像微软的Java虚拟机与Sun的Java运行时的关系一样。mono与Swing的概念空间并不完全相同。对于这一点,GTK更接近于此。

列出了Mono支持的GUI工具包,包括每个工具包的优缺点。正如其他人所建议的,WinForms、GTK#和wxNet都是可行的选项。

Windows.Forms是为.NET开发GUI应用程序的标准库

尽管2.0版在Windows上得到了很好的支持,但它也完全由Mono实现,这使得它可以在Mono支持的所有平台上使用

另一方面,WPF在概念上是一个新的库,目前它主要只在Windows上得到完全支持,而Mono的Silverlight实现—Moonlight只支持其中的一个子集

如果您正在构建用于高效跨平台使用的应用程序和/或有保守的性能限制,请使用Windows窗体

如果您想尝试和学习一些新的东西,或者如果您正在为Windows开发新的应用程序,请转到WPF。这是客户端GUI应用程序的新技术。

在github上有一个抽象层,它位于WPFWinFormsGTKMonoMac/Cocoa之上,因此您可以在所有平台上获得本机UI,而无需为每个平台重新实现。您不必受最低公分母的影响,因为您可以为每个平台实现细节(如果需要,但不是必需的话)


它有一个优点,即它是纯.NET的,并且只依赖于操作系统提供的依赖项,而不是使用GTK或WxWidgets,在这些地方,您必须为各种平台捆绑本机二进制文件。

对于iOS、Android和Windows Mobile,有Xamarin.Forms。这是一个抽象层,允许您编写跨平台代码,并在后台绑定到本机GUI工具包


我正在寻找更多这样的解决方案-我不仅关心移动平台,而且也关心桌面平台(windows、mac OSX、fedora/ubuntu/etc linux)

这是一个老问题,但作为更新,Mono和Xamarin的组合应该可以满足您现代跨平台的需求

微软刚刚推出了开源的.NET,并承诺在下一个版本中将.NET内核引入Linux和MacOS。微软还与Mono和Xamarin建立了密切的合作关系,专门帮助他们开发Android和Linux库


现在有很多。这取决于你在找什么。本文详细介绍了这三种技术。它们不是唯一的技术,但它们现在最受欢迎

C#,基于XAML,微软拥有的开源软件,支持Android、iOS、UWP等。本机渲染

C#,基于XAML,开源,支持Android、iOS、UWP等。本机渲染


C#,基于XAML,开源,支持Linux、MacOS、Windows等。每个平台上的像素完美渲染。

微软最近刚刚推出,它基于Xamarian并支持.NET内核

用他们的话说:

当我们考虑在统一的.NET中构建设备应用程序的样子时,我们看到了许多平台上使用的设备,从Android和iOS到Windows和MACOS。为了满足这一需求,我们非常高兴地宣布一个新的一流UI框架来实现这一点:.NET多平台应用程序UI,亲切地呼叫.NET MAUI

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


虽然他们没有指定Linux,但根据社区开发的支持它。

是的,但这是一项非常好的社区工作,我只是在做一些完全荒谬的事情时才看到兼容性问题(评论太短,无法描述:D)。正常的桌面编程通常都很好。据我所知,所有WinForms 2.0都是实现的。WinForms真的吗?那很有趣。几年前我最后一次检查时,什么都没有。据我所知,WinForms 2.0已经实现了。@Jay:关键短语是“几年前”mono仍然是一个非常活跃的项目。我知道你在说什么,在他的问题中,他问了关于AWT或Swing的问题,但我知道