使C#/ Winform应用程序跨平台 - 我应该使用AIR,Mono还是其他东西?

时间:2008-09-16 14:01:31

标签: c# winforms cross-platform

我有一个用C#/ WinForms(my little app)编写的应用程序。为了使它跨平台,我正在考虑在Adobe AIR中重做它。有没有任何论据支持WinForms作为跨平台应用程序? Winforms是否存在跨平台的未来(例如,Mono等)?关于跨平台UI开发的建议?

跨平台我的意思是,目前,Mac OSX,Windows和Linux。

这个问题是asked again and answered with better success

9 个答案:

答案 0 :(得分:6)

就我在Flex / AIR / Flash actionscripting中的经验而言,Adobe AIR开发环境和编码/调试工具集目前远不如Visual Studio和.NET SDK。 UI工具集虽然优越。

但是由于你已经有了一个可用的C#代码,将它移植到ActionScript可能需要重新设计,因为ActionScript具有不同的思维/编程方式,它们使用不同的原始数据类型,例如,他们只使用Number而不是int float double等等。调试工具与VS IMO相比安静得很少。

我听说Mono's GtkSharp是一个不错的平台。

但如果您不介意编码/调试工具问题,那么AIR是一个很好的平台。我喜欢Adobe如何将Flash体验整合到其中,例如您可以通过Flash动画片段中的按钮单击开始安装AIR应用程序,这种集成。

答案 1 :(得分:5)

  

我正在考虑在Adobe AIR中重做它

没有花太多时间使用AIR,我个人认为最好将webapp引入桌面并为其提供shell或在桌面上运行现有的flash / flex项目。

顺便说一句,如果你不了解ActionScript,我的意思是它的细节,怪癖等等,不要忘记考虑用谷歌搜索答案的时间。

  

有没有任何论据支持WinForms作为跨平台应用程序?   Winforms是否存在跨平台的未来(例如,Mono等)?

总是很难预测会发生什么,但我知道至少有一个项目(塑料SCM)在Win,Mac和Linux上使用Mono Winforms,所以它肯定是可行的。然而,他们说他们从头开始构建他们的大多数控件(并声称他们希望将它们作为开源发布,但不确定是否或何时),所以你需要投入一些工作来让事情看起来“漂亮” 。

我在非Windows平台上玩Winforms,不幸的是,它并不完全“成熟”(特别是在Mac上)。所以你开箱即用可能会或可能不足以满足你的需求。

如果您认为桌面应用程序不是提供跨平台解决方案的最佳方式,那么您始终可以使用C#编写业务逻辑,并使用ASP.NET创建完整的Web应用程序,或者使用Silverlight, C#还存在许多其他选项。

答案 2 :(得分:3)

Mono完全支持WinForms,因此它们是跨平台的。

答案 3 :(得分:3)

你为什么选择Air?

使用GTK#,您有一个跨平台表单引擎,您可以保留C#代码。

答案 4 :(得分:1)

我认为使用C#可靠地实现跨平台的唯一方法是Microsoft Silverlight,但实际上不是WinForms,而是基于浏览器。除此之外,是Mono是一个机会。

答案 5 :(得分:1)

如果您想使用.net Framework,Microsoft Silverlight是一个很好的(唯一的?)选择。浏览器作为shell做得很好,但您也可以为它编写自己的应用程序shell。例如,Scott Handelman mentions使用Silverlight编写的纽约时报阅读器和Mac上的Cocoa宿主。

答案 6 :(得分:0)

我认为WinForms根本没有未来。因为即使在MSFT世界(Win32周围的一个非常薄的包装器)它似乎也是一个止损解决方案。几乎没有对.NET 3.0和3.5中的System.Windows.Forms进行任何更改

</speculation>

我会使用Java或Air。

答案 7 :(得分:0)

我认为,只要你确保你编写的业务逻辑代码是跨平台的(即在路径中使用反斜杠只适用于Windows - 正斜杠适用于所有操作系统),那么Mono不应该有重大问题运行未修改的WinForms程序。只需确保测试图形故障。

答案 8 :(得分:0)

上周我问了一个类似的问题。我一直在使用Mono,并且没有运行我编译为IL的应用程序在SuSE linux(我通常运行KDE)或Windows上运行的问题,但是,我没有出去并且还没有测试到Mac它在。不过,我很快就会在几周内完成。但Mono的所有开发都非常擅长创建可在多个平台上运行的应用程序。