如何用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应用程序?
编辑/从评论移动:
几年前我看到了单色,但它很糟糕。 现在我看到它成长起来,支持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?