让我们说只是为了它的乐趣,我决定不再用Java编写桌面应用程序,而是想切换到使用C#.我希望能够构建一个将在某些主流Linux发行版上运行的应用程序,以及最近发布的MS Windows.它将有一个GUI组件.
在Java中,我可以构建一个使用Swing的应用程序.一旦我有它工作,我可以将该jar文件从Windows复制到Linux,反之亦然,这取决于我开发它的位置.它通常会运行java -jar myapp.jar
.
在C#中可以这样做吗?在C#中是否有与Swing或AWT相同的功能?
还有Eto.Forms(在github上),它是WPF,WinForms,GTK和MonoMac/Cocoa之上的抽象层- 因此您可以在所有平台上获得本机UI,而无需为每个平台重新实现.您不必受最低公分母的影响,因为您可以为每个平台实现细节(如果需要,但不是必需的).
它的优势在于它是纯.NET并且仅依赖于操作系统提供的依赖性,而不是使用GTK或WxWidgets,您必须为各种平台捆绑本机二进制文件.
可能GTK#将是最接近的.
我知道其他人说单音,但那不太对..Net是单声道,因为微软的Java VM是Sun的Java运行时.mono并不像Swing那样处于同一个概念空间.为此,GTK#是一个更接近的匹配.
我相信WinForms的很大一部分是在Mono中实现的.你需要在Linux下安装Mono.但是,您可能遇到兼容性问题,因为Mono不是Microsoft的努力,也不是他们的正式支持.
此页面包含Mono支持的GUI工具包列表,包括每个工具包的优缺点.正如其他人所说,WinForms,GTK#和wxNet都是可行的选择.