【发布时间】:2012-10-17 16:32:24
【问题描述】:
在这种特殊情况下,我需要为 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、Threading 和其他复杂的功能。另外现在帮助看起来真的很严重。我还没有接受答案,因为我看到人们仍然发布非常有用的链接。如果这个问题得到很多 +1,我会重写它,也许这会对其他人有所帮助。
我希望这里有人在这里对 .NET on linux 有一些实践经验...
【问题讨论】:
-
Mono 是 Microsoft .NET 的开源实现,您可能会使用它。
-
谢谢。我在哪里看到过这个,但我忘记了。无论如何,我仍然需要一些在 Mono 中开发的东西的实用信息。
-
如果担心兼容性问题,Mono Migration Analyzer 可以显示潜在问题。
-
如果您使用 pInvokes 访问 Win32 中的功能,Mono 将不适合 - 这将在 linux 上明显失败。
-
@adrianbanks 但他在自己的问题中提到了解决方案。他可以将程序分成两部分,一个独立于平台的 .NET 部分,带有一些 IPC,另一个是根据运行平台使用的本地组件。事实上he can still use P/Invoke,他只需要对windows使用一个类,对linux使用一个类