首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用mono来开发linux应用程序吗?

我应该使用mono来开发linux应用程序吗?
EN

Stack Overflow用户
提问于 2013-08-28 04:29:34
回答 3查看 4.9K关注 0票数 4

我有多年开发微软开发栈的经验,主要是visual 2012/c#。但是现在,我需要在linux上开发应用程序。虽然我认识c++,但我已经多年没有真正接触到它了。我没什么问题。

  1. 我是否可以在没有代码(或最小的)代码更改的情况下使用mono进行开发,并为linux和windows编译二进制文件?
  2. 我可以使用visual 2012在windows平台上进行开发,在windows平台上为linux编译吗?我是否需要使用虚拟机在windows平台上编译linux?
  3. 如果您想在windows平台上开发linux应用程序(在windows上开发,为linux和windows编译),您如何设置您的开发环境?我的linux机箱用于测试是一台单独的机器。)

一些关于我在做什么的信息。我的项目是关于网络频道的分析。客户端是廉价的工业linux盒,很可能没有ui。我使用mono/c#来开发客户端。服务器将是使用vs2012 c#开发的windows。很可能使用wpf作为ui。我计划在linux(客户端)和windows(服务器)之间共享网络/通信库。我使用linux的主要考虑是为了节省成本,因为客户端几乎是千台。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-08-28 05:44:01

Mono以Windows的原生文件格式PE (Portable )格式运行可执行文件。只要你的应用程序是一个纯MSIL,就不需要“为Linux编译”。即使您通过p/invoke使用本机DLL,Mono和Wine也一起在Linux上运行Windows文件。

(本机Linux应用程序使用的a.out和ELF可执行格式没有存储.NET元数据的机制,PE格式被修改为支持.NET,所以不管平台如何,.NET框架(而不是微框架)实现都使用这种格式)

票数 4
EN

Stack Overflow用户

发布于 2013-08-28 08:35:51

一开始最重要的事情是,

  • Mono的WinForms是有问题的。不仅大多数第三方控件不能正常工作,而且libgdiplus本身也不能100%地与微软的GDI+兼容。这似乎是一个很好的选择,但以后您可能仍然需要与不兼容进行艰苦的斗争。
  • WPF不是一个选项,因为Mono还不支持它。
  • GTK#是用户界面的最佳选择,它与Linux发行版自然地融合在一起。如果您正确地重构您的Windows项目,您应该能够在Windows和Linux解决方案之间共享非UI代码。这是Mono guys推荐的内容(不仅在Windows、Linux上使用本机UI框架,而且也适用于Mac/MonoMac、iOS/Xamarin.iOS和Android/Xamarin.Android)。

所以回到你的问题上,

  1. 您永远不应该希望对真实世界的项目不进行任何代码更改。不那是不可能的。正如我前面所说,您有机会共享大多数非UI部分。
  2. 您可以使用VS2012开发非UI部分和Windows部分,并在Windows上测试它们。如果计划使用Mono的WinForms或GTK#,则必须使用MonoDevelop在Linux上进行开发和调试。因此,您需要Linux的虚拟机或物理机器。
  3. 对我来说,我经常在Linux/MonoDe信封和Windows/VS之间切换。

由于Mono + C#比使用C/C++高效得多,许多成功的Linux应用程序都是在Mono上开发的,比如Banshee和Tomboy。

票数 3
EN

Stack Overflow用户

发布于 2013-08-28 04:35:33

可以使用Visual,但不能使用WPF,而Windows窗体是正常的。有关更多信息,请访问:http://www.mono-project.com/Compatibility

此外,还存在与VS:http://www.mono-project.com/GettingStartedWithMonoTools集成的Mono工具

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18479483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档