如何用C#.NET编写程序,在Linux / Wine / Mono上运行它们?

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

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

其余的只是很多简单的代码,没什么特别的,没有奇怪的控制,没有directx等。

我应该期待什么? 这会工作吗?

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

另外我想问一下关于Wine和.NET的问题:

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

  • 哪个版本的框架? (1.x,2.0还是我可以使用3.5?)
  • 我应该避免什么(从Windows dll?定时器导入?)
  • 编辑/从评论移动:

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

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


    你有没有在http://www.mono-project.com上阅读Mono.NET?

    它允许您编写.NET应用程序的Linux与微软实施细微差异。 我认为wine不会应付任何.NET组件。

    只是阅读文档之前,你有一个去。

    PS:这也给你单声道和.NET之间的兼容性列表。 http://www.mono-project.com/Compatibility和MoMA(单声道迁移分析器)是一个工具,它可以扫描已经创建的任何.NET应用程序,看它是否兼容在Linux上部署。


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

  • .NET for Linux的开放源代码限制称为Mono

  • 兼容性已有详细记录(请参阅下面的链接)。 Mono支持LINQ,线程和一些其他复杂的功能。

  • 它甚至支持InteropServices。 它可能在Linux库 (!) 使用DllImport ,例如libc.so

  • Mono可以支持Android和iOS (它们是基于Linux的,对吗?)

  • 有一种Mono兼容性分析工具称为MoMA(Mono Migration Analyzer)

  • Mono Migration Analyzer(MoMA)工具可帮助您识别将.Net应用程序移植到Mono时可能遇到的问题。 它有助于确定特定于平台的呼叫(P / Invoke)以及Mono项目尚未支持的区域。

    有用的链接:

    单声道 - 主页

    单页 - 包含文档的页面

    单声道 - 兼容性页面

    MoMA - 单一迁移分析页面


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

    如果你愿意,你可以在VisualStudio中开发,没有必要使用Mono开发环境。 只有运行时单声道库才能在Linux上运行.net应用程序。

    我们使用net 2.0目标在VisualStudio中编译这些应用程序,因为mono与.net 2.0几乎100%兼容。 Mono也从以后的.net版本实现APIS,但不是全部,也不完整。 如果您使用的版本比2.0更新,您应该检查是否支持这些版本或使用Mono兼容性分析工具。 你也可以使用Mono开发而不是Visual Studio,我的前任是这么做的; 结果几乎相同,我宁愿使用Visual Studio代替。

    我们没有发现任何重大问题,并且这些应用程序相对复杂,大量多线程,异步I / O,WinForms,套接字,串行端口等。

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

    希望有所帮助,

    链接地址: http://www.djcxy.com/p/90069.html

    上一篇: How to write programs in C# .NET, to run them on Linux/Wine/Mono?

    下一篇: Can I use Linux/Mono to deploy aspnet web application?