跨平台.Net?

跨平台.Net?

Cross platform .Net?

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

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


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

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


跨平台.NET开发的另一个相对较新的选择是使用开源的Eto.Forms框架,该框架允许您为每个平台的本机工具箱指定一个UI代码库。

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

开发中也有移动端口(iOS / Android)。

https://github.com/picoe/Eto


一个忠告。跨平台编程就像跨浏览器编程一样,唯一可以做的就是在要支持的所有平台上进行测试,测试和测试。


您最好使用一些跨平台工具包来编写它。很可能您将无法使用出色的视觉设计器(确实取决于您选择的工具包),但是手工编写UI并不是那么困难。 HTML专家一直在这样做,这在非MS领域也是很普遍的做法。

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

  • GTK#(Mono开发的实际标准,MonoDevelop IDE具有使用此工具包的内置表单设计器)
  • wxNET(基于wxWindows,已经相当成熟,但是您必须手动构建UI)
  • Qyoto(基于QT,它可能比wxWindows更好,但如果您的应用程序没有开源许可证,则可能需要Trolltech的商业许可证)

单声道是当前唯一的选择。它在这些平台上运行。将会出现问题,不一定很大,但仍然存在。


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

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

我还没有找到如何编译.Net应用程序的方法,该应用程序在Windows上可以从网络驱动器运行,而无需在PC上进行特殊的.Net安全配置。 (我认为这是.Net应用程序的普遍问题,但我仍在学习。)


如前所述,Mono Project是社区支持的最佳选择。

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


查看Mono项目

还可以查看针对富Internet应用程序的Silverlight或Flash。


老实说,我会评估您的客户群和您现有的技能。如果您将Windows分割为50/50,甚至将Windows /非Windows分割为70/30,那么使用Java或其他跨平台工具箱可能会更好。

Mono是一个不错的平台(请参阅一个星期前询问的SO问题),但是如果您做的事情很重要,我会为它设计一个工具箱。

顺便说一句,如果您想查看.NET GUI应用程序在Mono上的外观,每当我在Mono上运行NUnit GUI时,我都会写这篇文章:

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


推荐阅读

    linux怎么调用命令行?

    linux怎么调用命令行?,系统,地址,工具,工作,首页,终端,命令,密码,信息,情况,l

    浏览器调用linux命令?

    浏览器调用linux命令?,系统,信息,人工智能,软件,数据,首次,地址,代码,咨询,

    linux下并行运行命令?

    linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,l

    py调用linux的命令?

    py调用linux的命令?,系统,代码,状态,环境,标准,工具,命令,文件,脚本,终端,lin

    linux服务器基本命令?

    linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,l

    linux系统命令调用?

    linux系统命令调用?,系统,单位,工具,工作,管理,地址,权威,密码,电脑,信息,怎

    linux调用上一条命令?

    linux调用上一条命令?,系统,命令,一致,数字,名称,网上,电脑,目录,空格,终端,l

    linux命令行调用程序?

    linux命令行调用程序?,工具,环境,代码,初级,工程,系统,网上,服务,管理,发行,l

    linux服务器下载命令?

    linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,l

    linux命令怎么停服务?

    linux命令怎么停服务?,服务,系统,状态,代码,跨行,软件,情况,第一,名称,命令,l

    linux命令行后台运行?

    linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,l

    脚本运行linux命令?

    脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,lin

    linux服务端退出命令?

    linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,l

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    linux中启动服务命令?

    linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

    linux显示运行命令?

    linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如

    linux服务器常用命令?

    linux服务器常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,设备,功能,

    linux运行vim命令?

    linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令

    linux监控命令运行?

    linux监控命令运行?,系统,工作,地址,信息,工具,情况,标准,环境,命令,状态,lin

    linux筛选服务命令?

    linux筛选服务命令?,服务,系统,状态,软件,环境,主体,技术,号码,发行,名称,查