关于使C#/ Winform应用程序跨平台:使C#/ Winform应用程序跨平台-我应该使用AIR,Mono还是其他工具?

关于使C#/ Winform应用程序跨平台:使C#/ Winform应用程序跨平台-我应该使用AIR,Mono还是其他工具?

Making a C#/Winform application cross-platform - should I use AIR, Mono, or something else?

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

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

再次提出该问题,并获得了较好的答复。


就我在Flex / AIR / Flash动作脚本方面的经验来看,目前Adobe AIR开发环境和编码/调试工具集远不及Visual Studio和.NET SDK。 UI工具集虽然很出色。

但是,由于您已经有了可以正常工作的C#代码,由于ActionScript具有不同的思维/编程方式,将其移植到ActionScript可能需要重新设计,它们使用不同的原始数据类型,例如,它们仅使用Number而不是< x1>等,与VS IMO相比,调试工具非常安静。

我听说Mono的GtkSharp很安静,是一个不错的平台。

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


I'm thinking of redoing it in Adobe AIR

我没花太多时间在AIR上,我个人认为这是将Web应用程序带到桌面并为其提供外壳程序或在桌面上运行现有Flash / flex项目的最佳选择。

顺便说一句,如果您不了解ActionScript,我的意思是它的详细信息,怪癖等等,请不要忘记考虑使用Google搜索答案的时间。

Are there any arguments in favor of WinForms as a cross-platform app?
Is there a cross-platform future for Winforms (e.g., Mono, etc.)?

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

我在非Windows平台上使用Winforms玩,不幸的是,它并不完全"成熟"(尤其是在Mac上)。因此,开箱即用的产品可能无法满足您的需求。

如果您认为台式机应用程序不是提供跨平台解决方案的最佳方法,则始终可以采用C#编写业务逻辑,并使用ASP.NET创建成熟的Web应用程序或使用Silverlight,还有许多其他选择与C#存在。


你为什么要选择Air?

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


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


如果要使用.net Framework,Microsoft Silverlight是一个不错的选择(唯一?)。浏览器作为shell很好,但是您也可以为其编写自己的应用程序shell。例如,斯科特·汉德尔曼(Scott Handelman)提到了用Silverlight编写的《纽约时报》阅读器,并在Mac的Cocoa上编写了Hostet。


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


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


我认为,只要确保您编写的业务逻辑代码是跨平台的(即,在路径中使用反斜杠仅在Windows上有效-正斜杠在所有OS上均有效),那么Mono在运行未修改的程序时就不会有大问题WinForms程序。只需确保测试图形毛刺即可。


我认为WinForms根本没有未来。因为即使在MSFT世界中,它似乎也是一个权宜之计(围绕Win32的非常薄的包装器)。实际上,.NET 3.0和3.5中的System.Windows.Forms似乎都没有进行任何更改。

1
</speculation>

我会使用Java或Air。


推荐阅读