是否可以使用mono在Pi上运行.NET代码?


Answers:


25

在Raspberry Pi上有一个与此非常相似的StackOverflow问题。但是,通过我自己的研究,我无法找到特定于.NET的任何东西,而只能找到C#。

您可以通过执行以下操作在Debian发行版上使用APT安装运行时:

$ sudo apt-get install mono-runtime

您还可以(假设您拥有某种GUI,例如LXDE)通过以下方式安装缓慢的 Mono IDE:

$ sudo apt-get install monodevelop

对于Arch Linux ARM,您需要通过Pacman安装运行时,如下所示:

$ sudo pacman -S mono

可以用类似的方式安装Mono IDE:

$ sudo pacman -S monodevelop

1
您所说的“只不过是C#”是什么意思?
乔恩·埃格顿

@JonEgerton C#是一种语言,而.NET是一个框架。您可以使用C#为.NET框架进行开发,但是C#可以作为独立的编程语言独立存在。一个更相关的示例可能是:您使用Java为Android开发,但可以使用Java编写桌面程序。C#不依赖于.NET,但是.NET依赖于C#。
安德鲁·拉尔森

嗨,抱歉,这不是我的意思(我是.Net开发者!)。它更多地是C#的排他性,而不是其他.net家族语言(vb.net,J#F#等)。我从来没有研究过Mono,也没有意识到这仅仅是C#。
乔恩·埃格顿

5
@Andrew恰恰相反:.NET不依赖C#–但是C#依赖于诸如 .NET(或Mono)之的运行时,实际上它从来都不是独立的编程语言。此外,mono完全与语言无关(.NET也是如此),因此它再次不依赖于C#。
康拉德·鲁道夫2012年

1
不要在设备上安装MonoDeveloper。那太慢了。只需使用CIFS安装网络驱动器,然后在快速的PC / MAC上进行编译,然后在LAN上进行测试运行。
BerggreenDK

8

与流行的看法相反,VB.NET编译的代码至少在Debian下的Raspberry Pi上运行良好。apt-get install mono-vbnc,然后运行您的VB exe作为mono的参数,例如mono yourexe.exe

我没有编写任何性能基准测试,因为我没有编写性能密集型应用程序,但到目前为止还不错。


任何.NET语言都可以编译为相同的IL /字节码,因此一旦触发编译器(mono-vbnc或任何语言),您的VB就会消失,IL就是RUNTIME内核中使用的东西。
BerggreenDK

6

使用.NET Framework库的 .NET代码无法在Raspberry Pi上运行,因为它需要ARM兼容版本的NETMFCLR才能运行。到目前为止,微软尚未发布基于ARM的Windows(WoA)。有关Microsoft Research CLR在ARM上的工作,请参考实验19

但是,由于Mono具有用于ARM设备的CLR,因此可以使用Mono运行.NET代码(无需参考或使用.NET Framework库)。

另请参阅为ARM处理器体系结构构建Windows,以获取有关Windows on ARM(WoA)的信息。


3
我认为您的说法在这里是错误的。可以复制在PC上编译的.EXE文件,该文件引用并使用.NET框架类(例如Socket类或TcpListener类),将其原样复制到RPi,并使其在RPi上完美运行单声道下的RPi。这是因为Mono使用完全相同的名称空间,类型和接口,用自己的版本替换了大多数.NET框架基类
dodgy_coder 2012年

4

我有一个命令行.NET应用程序可与Mono一起使用。该应用程序基本上在做类似于端口转发的操作,接收通过串行UART接收的数据并通过TCP / IP转发。它使用SerialPort,TcpListener,TcpClient和Socket .NET类,只需要对SerialPort处理代码进行较小的更改。我正在使用Debian软浮动OS。

在性能方面,我遇到的第一件事是某些调试/跟踪代码的显着减慢,该代码将字节数组格式化为字符串以进行记录。与在PC上运行相比,它慢了50倍。

因此,建议在将现有代码移植到RPi时编写一些性能单元测试。

对于单元测试,NUnit在RPi上可以正常工作。

要安装NUnit:

sudo apt-get install nunit

跑步:

nunit-console appUnderTest.exe

1
速度是相对的。但是以1000兆赫兹(模型2)运行的Raspberry PI的性能近似于奔腾300兆赫兹,因此这可以解释为什么.NET / MONO刚开始时会感觉很慢。
BerggreenDK 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.