22

在这种特殊情况下,我需要为 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 在 linux 上的实践经验......

4

5 回答 5

21

您是否在http://www.mono-project.com上阅读过有关 Mono.NET 的信息?

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

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

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

于 2012-10-27T19:25:13.737 回答
6

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

  1. .NET for Linux 的开源实现称为Mono

  2. 兼容性有据可查(请参阅下面的链接)。Mono 支持 LINQ、线程和其他一些复杂的特性。

  3. 它甚至支持 InteropServices。例如,可以在 linux 库(!)上使用DllImportlibc.so

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

  5. 有一个用于 Mono 兼容性分析的工具,称为 MoMA(Mono Migration Analyzer)

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

有用的链接:

单声道 - 主页

带有文档的单页

Mono - 兼容性页面

MoMA - Mono 迁移分析页面

于 2012-10-28T03:43:30.200 回答
3

我们有几个使用 Mono 在 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,套接字,串口等。

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

希望有帮助,

于 2014-04-21T14:48:29.327 回答
2

您可以使用 .NET Core 在 linux 上开发 C# 应用程序:https ://www.microsoft.com/net/core

安装后,在终端中键入dotnet new以获取可以生成的应用程序模板列表供您启动。

从今天的 .NET Core 2.0 开始,列表如下:

Templates                                         Short Name       Language          Tags               
--------------------------------------------------------------------------------------------------------
Console Application                               console          [C#], F#, VB      Common/Console     
Class library                                     classlib         [C#], F#, VB      Common/Library     
Unit Test Project                                 mstest           [C#], F#, VB      Test/MSTest        
xUnit Test Project                                xunit            [C#], F#, VB      Test/xUnit         
ASP.NET Core Empty                                web              [C#], F#          Web/Empty          
ASP.NET Core Web App (Model-View-Controller)      mvc              [C#], F#          Web/MVC            
ASP.NET Core Web App                              razor            [C#]              Web/MVC/Razor Pages
ASP.NET Core with Angular                         angular          [C#]              Web/MVC/SPA        
ASP.NET Core with React.js                        react            [C#]              Web/MVC/SPA        
ASP.NET Core with React.js and Redux              reactredux       [C#]              Web/MVC/SPA        
ASP.NET Core Web API                              webapi           [C#], F#          Web/WebAPI         
global.json file                                  globaljson                         Config             
Nuget Config                                      nugetconfig                        Config             
Web Config                                        webconfig                          Config             
Solution File                                     sln                                Solution           
Razor Page                                        page                               Web/ASP.NET        
MVC ViewImports                                   viewimports                        Web/ASP.NET        
MVC ViewStart                                     viewstart                          Web/ASP.NET        

当前最新版本为 2.0。

于 2017-10-05T16:00:21.477 回答
0

您可以使用 winetricks 在 wine 中安装完整的 .Net Framework 4.x,然后运行您的应用程序。

Wine 支持串口,所以我看不出有什么不便。

我制作了一个视频来展示这一点:

https://www.youtube.com/watch?v=60yyWBLXv1k

在视频中,您可以看到 windows 任务栏。别担心。这是因为它在 WSL2 中运行。但这些步骤在 Linux 中完美运行。

问候

于 2020-06-15T16:45:09.583 回答