跨平台制作C#/Winform应用程序-我应该使用AIR、Mono还是其他什么?

跨平台制作C#/Winform应用程序-我应该使用AIR、Mono还是其他什么?,c#,winforms,cross-platform,C#,Winforms,Cross Platform,我有一个我用C#/WinForms()编写的应用程序。为了使它跨平台,我考虑在AdobeAIR中重做它。是否有人支持WinForms作为跨平台应用程序?Winforms(如Mono等)是否有跨平台的未来?跨平台UI开发的建议 我所说的跨平台是指目前的MacOSX、Windows和Linux 这个问题是。WinForms完全受Mono支持,因此它们是跨平台的。我认为使用C实现跨平台可靠的唯一方法是,但不是真正的WinForms,而是基于浏览器的。除此之外,Mono是一个机会。我认为WinForms

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

我所说的跨平台是指目前的MacOSX、Windows和Linux


这个问题是。

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

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

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

</speculation>


我会使用Java或Air。

根据我在Flex/Air/Flash actionscripting方面的经验,Adobe Air开发环境和编码/调试工具集目前远不如Visual Studio和.NET SDK。不过,UI工具集更为优越

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

我听说这是一个安静的平台


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

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

你为什么要用Air


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

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

上周我问了一个类似的问题。我一直在使用Mono,在SuSE linux(我通常运行KDE)或windows上运行编译为IL的应用程序时没有遇到任何问题,但是,我还没有出去买一台mac电脑来测试它。不过,我很快就会回来,可能再过几周就会回来。但Mono的所有开发都非常擅长创建在多个平台上运行的应用程序

我正在考虑用AdobeAIR重做

由于没有花太多时间使用AIR,我个人的观点是,最好将一个webapp带到桌面,并为其提供一个外壳,或者在桌面上运行现有的flash/flex项目

顺便说一句,如果你不知道ActionScript,我指的是它的细节、怪癖等等,别忘了考虑到谷歌搜索答案所需的时间

是否有人支持WinForms作为跨平台应用程序? Winforms(如Mono等)是否有跨平台的未来

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

我在非windows平台上使用Winforms,但不幸的是,它并不完全“成熟”(特别是在Mac上)。因此,你从盒子里得到的东西可能足以满足你的需要,也可能不足以满足你的需要


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

让我看看我的水晶球……水晶球就好了,但基于事实的猜测也很酷。现在再来介绍一些十年前不存在的最新解决方案:winforms的Eto.Forms、WPF的Avalonia、C#web应用的Blazor。ASP.Net仍然有效,但我觉得它正在失去优势。Gtk有点晦涩,不是本地的C语言,但也能工作。Silverlight死得很惨。只是为了将来的读者。你太轻视单声道了。讽刺的是,你还夸大了月光,因为它依赖单声道,而且还没有完成。如果你指的是跨平台==Windows和Mac,那么可能是Silverlight。很有趣!我从没想过,但你是对的。。。虽然Silverlight可能永远不会被很好地采用,但它现在可能并不比AdobeAIR差。对不起,我只是改变了问题:我需要一些适用于Mac、PC和Linux的东西。同时,我发现在Flex中构建UI组件和任何严肃的UI工作都比在.Net中容易20倍——使用纯Flash作为选项。但这是一种观点。啊,观点很正确。但我的观点是,你已经有了可以工作的C#代码,因此与仅仅将其移植到Mono相比,port-to-AIR可能是一个很大的重写。关于工具,我指的是调试/编码工具。毫无疑问,Flash平台确实有优秀的UI工具:-)现在就编辑我的答案,但是,如果你想使用GtkSharp,你也要重写!WinForms受Mono支持,因此只需将Mono/WinForms用作