是否可以(和可行)在具有Mono的Raspberry Pi上运行.NET应用程序?
如果是这样,它们的运行状况如何?基本的GUI是否可用,或者性能不佳实际上将其限制在命令行应用程序中?
是否可以(和可行)在具有Mono的Raspberry Pi上运行.NET应用程序?
如果是这样,它们的运行状况如何?基本的GUI是否可用,或者性能不佳实际上将其限制在命令行应用程序中?
Answers:
在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
与流行的看法相反,VB.NET编译的代码至少在Debian下的Raspberry Pi上运行良好。apt-get install mono-vbnc,然后运行您的VB exe作为mono的参数,例如mono yourexe.exe
我没有编写任何性能基准测试,因为我没有编写性能密集型应用程序,但到目前为止还不错。
使用.NET Framework库的 .NET代码无法在Raspberry Pi上运行,因为它需要ARM兼容版本的NETMF或CLR才能运行。到目前为止,微软尚未发布基于ARM的Windows(WoA)。有关Microsoft Research CLR在ARM上的工作,请参考实验19。
但是,由于Mono具有用于ARM设备的CLR,因此可以使用Mono运行.NET代码(无需参考或使用.NET Framework库)。
另请参阅为ARM处理器体系结构构建Windows,以获取有关Windows on ARM(WoA)的信息。
我有一个命令行.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