首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C# .NET中编写程序,以便在Linux/Wine/Mono上运行?

如何在C# .NET中编写程序,以便在Linux/Wine/Mono上运行?
EN

Stack Overflow用户
提问于 2012-10-28 03:19:19
回答 5查看 43.3K关注 0票数 22

在这种特殊的情况下,我需要在Linux上运行.complicated NET应用程序。我指的是复杂的--那个项目开发了3年,我不想再用java或其他东西写它,然后开发并支持这两个版本,.NET和Java版本。

应用程序正在生成鼠标和键盘事件(通过winapi/dll导入)并使用串行端口。我也有一些用于延迟的计时器-用于串口通信(10-20毫秒,这里我不需要很大的精度)。

剩下的只是一些简单的代码,没有什么特别的,没有奇怪的控件,没有directx等等。

我应该期待什么呢?这样行得通吗?

如果代码的某一部分会失败-我可以稍微修改一下,在.net应用程序和linux上的小应用程序之间建立网络连接,我可以编写它来发送鼠标和键盘事件,或者RS232通信。

另外,我想问一下葡萄酒和.NET的一般情况:

如何编写应该在Linux/Wine上运行的.NET应用程序?

  • 哪个版本的框架?(1.x、2.0或我可以使用3.5?)
  • 我应该避免什么(从windows dll导入?计时器?)

从评论编辑/移动

我几年前见过mono,但它太可怕了。现在我看到了它的成长,支持LINQ,线程和其他复杂的功能。此外,现在的帮助看起来真的很严重。我还没有接受答案,因为我看到人们仍然张贴非常有用的链接。如果这个问题得到了很多+1,我会重写它,也许这会对其他人有所帮助。

我希望这里的人在这里有一些在linux上使用.NET的实际经验。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-28 03:25:14

你在http://www.mono-project.com上读过关于Mono.NET的文章吗

它允许你为Linux编写.NET应用程序,与微软的实现略有不同。我不认为wine可以处理任何.NET组件。

只需阅读之前的文档,您就可以开始尝试了。

PS:这也给了你mono和.NET之间的兼容性列表。http://www.mono-project.com/CompatibilityMoMA(mono migration analyzer)是一个工具,它可以扫描任何已经创建的.NET应用程序,看看它是否兼容部署在linux上。

票数 20
EN

Stack Overflow用户

发布于 2012-10-28 11:43:30

在这篇文章中,我在这篇文章中缩短并组合了我从其他人那里学到的所有信息。

Mono.

  • Compatibility是
  1. 对.NET的开源实现,有很好的文档记录(请参阅下面的链接)。Mono支持LINQ,线程和其他一些复杂的功能。
  2. 它甚至支持InteropServices。可以在Linux库上使用DllImport (!),比如example.
  3. Mono的libc.so可以支持Android和iOS (它们是基于linux的,是一个用于单声道兼容性分析的工具,称为MoMA (单声道迁移分析器)

Mono Migration Analyzer (MoMA)工具可以帮助您识别在将.Net应用程序移植到Mono时可能遇到的问题。它有助于精确定位特定于平台的调用(P/Invoke)和Mono项目还不支持的区域。

有用链接:

Mono - home page

Mono - page with documentation

Mono - compatibility page

MoMA - Mono Migration Analysis page

票数 6
EN

Stack Overflow用户

发布于 2014-04-21 22:48:29

我们有几个.net应用程序,它们运行在装有Mono的Windows或Linux上。

如果你愿意,你可以使用VisualStudio进行开发,不需要使用Mono开发环境。只有运行时mono库才能在Linux上运行.net应用程序。

我们使用NET2.0 target在VisualStudio中编译这些应用程序,因为mono几乎100%兼容.net 2.0。Mono还实现了更高版本的.net的APIS,但不是全部,也不是完整的。如果您使用的是2.0以上版本的特性,则应该检查是否支持这些特性,或者使用Mono兼容性分析工具。你也可以使用Mono develop而不是Visual Studio,我的前任也是这样做的;结果几乎是一样的,我更喜欢使用Visual Studio。

我们没有发现任何大麻烦,而且应用程序相对复杂,大量多线程,异步I/O,WinForms,套接字,串口等。

一些应用程序使用的.net库在MS .net中不可用,但所有这些库都可以安装在Windows上,因此在Windows中运行这些应用程序没有问题。

希望这能有所帮助,

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

https://stackoverflow.com/questions/13103360

复制
相关文章

相似问题

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