Monoを使用してRaspberry Piで.NETアプリケーションを実行することは可能ですか?
もしそうなら、彼らはどれくらいうまく走りますか?基本的なGUIは使用可能ですか、それともパフォーマンスの低下は現実的にコマンドラインアプリケーションに制限されていますか?
Monoを使用してRaspberry Piで.NETアプリケーションを実行することは可能ですか?
もしそうなら、彼らはどれくらいうまく走りますか?基本的なGUIは使用可能ですか、それともパフォーマンスの低下は現実的にコマンドラインアプリケーションに制限されていますか?
回答:
Raspberry PiのMonoによく似たStackOverflowの質問があります。しかし、私自身の研究を通して、.NETに固有のものを見つけることはできませんでしたが、C#だけを見つけました。
以下を実行することにより、DebianディストリビューションでAPTを使用してランタイムをインストールできます。
$ sudo apt-get install mono-runtime
(LXDEなどのGUIを使用している場合)低速な Mono IDEをインストールすることもできます:
$ sudo apt-get install monodevelop
以下のためにアーチLinuxの ARMあなたは経由でランタイムをインストールする必要がパックマンそうのように、:
$ sudo pacman -S mono
Mono IDEも同様の方法でインストールできます。
$ sudo pacman -S monodevelop
一般的な考えに反して、VB.NETでコンパイルされたコードは、少なくともDebianの下ではRaspberry Piで正常に動作します。apt-get mono-vbncをインストールしてから、VB exeをmonoの引数として実行します(例:mono yourexe.exe)
パフォーマンス集約型のアプリを書いているわけではないので、パフォーマンスベンチマークは行っていませんが、これまでのところは問題ないようです。
.NET Frameworkライブラリを使用している.NETコードは、Raspberry Piで実行できません。ARM互換バージョンのNETMFまたはCLRを実行する必要があるためです。現在のところ、MicrosoftはまだARM(WoA)でWindowsをリリースしていません。ARMで動作するMicrosoft Research CLRについては、実験19を参照してください。
ただし、MonoにはARMデバイス用のCLRがあるため、Monoを使用して.NETコードを(参照なしで、または.NET Frameworkライブラリを使用して)実行できます。
ARM on Windows(WoA)については、ARMプロセッサアーキテクチャ向けのWindowsのビルドも参照してください。
Monoで動作するコマンドライン.NETアプリケーションがあります。このアプリは基本的に、ポートフォワーディングに似た処理を行い、シリアル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