6

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

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

4

9 回答 9

10

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

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

于 2008-09-11T08:21:49.140 回答
7

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

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

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

https://github.com/picoe/Eto

于 2012-02-02T23:20:05.790 回答
3

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

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

  • GTK#(Mono 开发的事实标准, MonoDevelop IDE具有使用此工具包的内置表单设计器)
  • wxNET(基于 wxWindows,相当成熟,但你必须手动构建你的 UI)
  • Qyoto(基于 QT,它可能比 wxWindows 更好,但如果您的应用程序没有开源许可证,您可能需要 Trolltech 的商业许可证)
于 2008-09-11T08:26:22.467 回答
3

一条忠告。跨平台编程就像跨浏览器编程一样,肯定要做的一件事是在您想要支持的所有平台上进行测试、测试和测试。

于 2008-09-11T10:45:25.237 回答
2

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

于 2008-09-11T08:22:28.390 回答
0

查看Mono 项目

还可以查看用于富 Internet 应用程序的SilverlightFlash 。

于 2008-09-11T08:21:52.243 回答
0

如前所述,Mono 项目是您最好的选择,因为它有社区支持。

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

于 2008-09-11T10:26:40.523 回答
0

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

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

我还没有弄清楚如何编译一个 .Net 应用程序,它在 Windows 上可以从网络驱动器运行,而不需要在 PC 上进行特殊的 .Net 安全配置。(我认为这是 .Net 应用程序的普遍问题,但我仍在学习。)

于 2008-09-11T10:31:27.563 回答
-1

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

Mono 是一个不错的平台(请参阅大约一周前提出的这个 SO 问题),但如果您正在做任何重要的事情,我会使用专为它设计的工具包。

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

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

于 2008-09-11T10:48:00.083 回答