跨平台.Net?

跨平台.Net?

Cross platform .Net?

如果要编写在本地运行的GUI应用程序并调用Web服务(要跨平台),可以使用.Net进行操作,您会推荐哪些工具?

我正在考虑使用Java,因为它与C#相似,因此相对较容易上手,然后可以使用JVM。


您应该熟悉Mono项目和MonoDevelop。这些项目的明确目的是允许在包括Windows,Linux和Mac OSX在内的各种平台上构建和运行.NET代码。

由于Mono是.NET的重新实现,因此它总是落后于Microsoft.NET,但是它们对.NET 2.0和某些.NET 3.x功能都有很好的覆盖。请注意,Mono执行.NET二进制文件,因此,只要Mono支持程序功能,就可以将您在Windows上编译的应用程序EXE带到Linux / Mono上运行,而无需重新编译。


跨平台.NET开发的另一个相对较新的选择是使用开源的Eto.Forms框架,该框架允许您为每个平台的本机工具箱指定一个UI代码库。

对于Windows,它使用WinForms或WPF;对于Linux,它使用GTK#;对于OS X,它使用MonoMac / Cocoa。

开发中也有移动端口(iOS / Android)。

https://github.com/picoe/Eto


一个忠告。跨平台编程就像跨浏览器编程一样,唯一可以做的就是在要支持的所有平台上进行测试,测试和测试。


您最好使用一些跨平台工具包来编写它。很可能您将无法使用出色的视觉设计器(确实取决于您选择的工具包),但是手工编写UI并不是那么困难。 HTML专家一直在这样做,这在非MS领域也是很普遍的做法。

一些具有.NET绑定的跨平台UI工具包

  • GTK#(Mono开发的实际标准,MonoDevelop IDE具有使用此工具包的内置表单设计器)
  • wxNET(基于wxWindows,已经相当成熟,但是您必须手动构建UI)
  • Qyoto(基于QT,它可能比wxWindows更好,但如果您的应用程序没有开源许可证,则可能需要Trolltech的商业许可证)

单声道是当前唯一的选择。它在这些平台上运行。将会出现问题,不一定很大,但仍然存在。


我最近在Linux上编写了一个C#GUI应用程序,使用mono进行编译和运行。我发现必须使用" gmcs"编译器才能访问现代C#和.Net功能(mono 1.9附带了几种不同的编译器)。

并且,在编译.exe文件时,我发现必须添加" -target:winexe"开关才能使该应用程序在Windows上运行,而无需在应用程序后面弹出命令行。

我还没有找到如何编译.Net应用程序的方法,该应用程序在Windows上可以从网络驱动器运行,而无需在PC上进行特殊的.Net安全配置。 (我认为这是.Net应用程序的普遍问题,但我仍在学习。)


如前所述,Mono Project是社区支持的最佳选择。

如果您使用的是Visual Basic,那么REALbasic也值得一看,因为它具有创建本机可执行文件的交叉编译器。他们有一个试用版,您也可以下载


查看Mono项目

还可以查看针对富Internet应用程序的Silverlight或Flash。


老实说,我会评估您的客户群和您现有的技能。如果您将Windows分割为50/50,甚至将Windows /非Windows分割为70/30,那么使用Java或其他跨平台工具箱可能会更好。

Mono是一个不错的平台(请参阅一个星期前询问的SO问题),但是如果您做的事情很重要,我会为它设计一个工具箱。

顺便说一句,如果您想查看.NET GUI应用程序在Mono上的外观,每当我在Mono上运行NUnit GUI时,我都会写这篇文章:

http://www.cornetdesign.com/2006/07/nunit-gui-running-green-on-monolinux.html


推荐阅读