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

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

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

这个问题再次被问到并得到了更好的回答 。

我正在考虑在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#中。

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

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

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

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

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

你为什么选择Air?

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

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

如果您想使用.net Framework,Microsoft Silverlight是一个很好的(唯一的?)选择。 浏览器作为shell做得很好,但您也可以为它编写自己的应用程序shell。 例如,斯科特·汉德尔曼( Scott Handelman) 提到在Silverlight上写的纽约时报读者和在Mac上的Cocoa上的hostet。

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

  

我会使用Java或Air。

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

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