跨平台.Net?

时间:2008-09-11 08:20:29

标签: .net cross-platform

如果您要编写一个在本地运行并调用Web服务的GUI应用程序,为了跨平台,您可以使用.Net来做,您会推荐哪些工具?

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

9 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:7)

跨平台.NET开发的另一个相对较新的选择是使用开源的Eto.Forms Framework,它允许您拥有一个UI代码库,目标是每个平台的本机工具包。

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

还有移动端口(iOS / Android)正在开发中。

https://github.com/picoe/Eto

答案 2 :(得分:3)

您最好使用一些跨平台工具包编写它。很可能你将无法使用漂亮的视觉设计师(这实际上取决于你选择的工具包),但手工编写UI并不是那么困难。 HTML人员一直这样做,而且在非MS世界中也很常见。

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

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

答案 3 :(得分:3)

一条建议。跨平台编程就像跨浏览器编程一样,可以肯定的是在你想要支持的所有平台上进行测试,测试和测试。

答案 4 :(得分:2)

Mono是目前唯一的选择。它在these platforms上运行。并且会有问题,不一定是巨大的,但仍然存在。

答案 5 :(得分:0)

查看Mono project

另请查看有关互联网应用的SilverlightFlash

答案 6 :(得分:0)

如前所述,The Mono Project是您最好的选择,因为它得到了社区的支持。

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

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:-1)

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

Mono是一个不错的平台(请参阅this SO question asked about a week ago),但如果您正在做任何重要的事情,我会选择专为此设计的工具包。

顺便说一句,如果你想看看Mono上的.NET GUI应用程序是什么样子,这是我在Mono上运行NUnit GUI时所做的一篇文章:

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