題:
是否可以使用mono在Pi上運行.NET代碼?
berry120
2012-06-13 03:02:29 UTC
view on stackexchange narkive permalink

是否可以(並且可行)使用 Mono在Raspberry Pi上運行.NET應用程序?

如果是,它們運行得如何?基本的GUI是否可用,或者性能差實際上將其限制在命令行應用程序中?

也許[Portable.NET](http://www.dotgnu.org/)也是一個選項。
HTTPS://馬上-IO T.GitHub.IO/content/恩-US/get started.htm
四 答案:
#1
+26
Andrew Larsson
2012-06-13 03:45:42 UTC
view on stackexchange narkive permalink

有一個與StackOverflow問題非常相似的問題, Raspberry Pi上的Mono。但是,通過我自己的研究,我無法找到特定於.NET的任何東西,只能找到C#。

您可以在Debian上使用 APT安裝運行時。通過執行以下操作進行發行:

  $ sudo apt-get install mono-runtime  

您還可以(假設您具有某種GUI,例如LXDE)進行安裝一個 slow Mono IDE,具有:

  $ sudo apt-get install monodevelop  

對於 Arch Linux ARM,您需要通過 Pacman安裝運行時,像這樣:

  $ sudo pacman -S mono  

The Mono可以類似的方式安裝IDE:

  $ sudo pacman -S monodevelop  
您所說的“只不過是C#”是什麼意思?
@JonEgerton C#是一種語言,而.NET是一種框架。您可以使用C#為.NET框架進行開發,但是C#可以作為獨立的編程語言獨立存在。一個更相關的示例可能是:您使用Java為Android開發,但可以使用Java編寫桌面程序。 C#不依賴於.NET,但是.NET依賴於C#。
嗨,抱歉,這不是我的意思(我是.Net開發者!)。它更多地是C#的排他性,而不是其他.net家族語言(vb.net,J#F#等)。我從來沒有研究過Mono,也沒有意識到這僅僅是C#。
哦,我明白你在說什麼。我只是想在C#和.NET上找到東西,並沒有真正考慮檢查其他.NET語言。從我所記得的,以及從我閱讀的所有論壇線程中,我都沒有發現開發人員試圖將其加入RPi。
-1
沒錯,但是作為一個框架意味著它與一種語言綁定在一起。可以將其移植/重寫為使用不同語言的不同實現,因此“捆綁”這個詞對我來說可能有點過強。
不要在設備上安裝MonoDevelop。那太慢了。只需使用CIFS安裝網絡驅動器,然後在快速的PC / MAC上進行編譯,然後在LAN上進行測試運行。
@BerggreenDK好主意。如果您修改答案以包含該內容,我將接受您的修改。
@AndrewLarsson-我在StackoverFlow的這一部分還沒有編輯權限。但是只需掛載CIFS驅動器。它非常努力。網站上的常見問題解答甚至介紹了操作方法。
@AndrewLarsson-實際上我的想法不是我真正的想法,我的開發技能來自於Commodore 64和Amiga的發展,我們可以在更大的硬件上進行交叉編譯以在測試時具有更快的速度,所以它並不是什麼新鮮的東西,它曾經是: “不要更努力,更聰明” :-)
#2
+8
Guy
2012-07-19 14:57:25 UTC
view on stackexchange narkive permalink

與普遍的看法相反,VB.NET編譯的代碼至少在Debian下的Raspberry Pi上運行良好。 apt-get install mono-vbnc,然後運行您的VB exe作為mono的參數,例如mono yourexe.exe

我沒有執行任何性能基準測試,因為我沒有編寫性能密集型應用程序,但是到目前為止還不錯。

任何.NET語言都可以編譯為相同的IL /字節碼,因此一旦觸發編譯器(mono-vbnc或任何語言),您的VB就會消失,IL就是RUNTIME內核中使用的東西。
#3
+6
JeeShen Lee
2012-07-16 11:37:44 UTC
view on stackexchange narkive permalink
使用 .NET Framework庫

.NET代碼無法在Raspberry Pi上運行,因為它需要ARM兼容版本的 NETMF CLR 一個>運行。到目前為止,微軟尚未發布基於ARM的Windows(WoA)。有關Microsoft Research CLR在ARM上的工作,請參考 實驗19

但是,運行.NET代碼(不參考或使用.NET Framework庫)是可能使用Mono,因為Mono具有用於ARM設備的CLR。

另請參閱 為ARM處理器體系結構構建Windows ,以獲取有關ARM on Windows(WoA) )。

我認為您的說法在這裡是錯誤的。可以復制在PC上編譯的.EXE文件,該文件引用並使用.NET框架類(例如Socket類或TcpListener類),然後將其原樣複製到RPi,並使其在RPi上完美運行。單聲道下的RPi。這是因為[Mono使用完全相同的名稱空間,類型和接口,用其自己的版本替換了大多數.NET框架基類](http://www.mono-project.com/Compatibility)。
#4
+4
dodgy_coder
2012-09-11 10:15:09 UTC
view on stackexchange narkive permalink

我有一個可與Mono一起使用的命令行.NET應用程序。該應用程序基本上在做類似於端口轉發的操作,接收通過串行UART接收的數據並通過TCP / IP轉發。它使用SerialPort,TcpListener,TcpClient和Socket .NET類,僅需對SerialPort處理代碼進行較小的更改。我正在使用Debian軟浮動OS。

在性能方面,我遇到的第一件事是某些調試/跟踪代碼中的一些顯著減慢,這些代碼將字節數組格式化為用於記錄目的。與在PC上運行相比,它慢了50倍。

所以我建議在將現有代碼移植到RPi時編寫一些性能單元測試。

對於單元測試,NUnit在RPi上可以正常工作。

要安裝NUnit:

  sudo apt-get安裝nunit  

要運行:

  nunit-console appUnderTest .exe  
速度是相對的。但是以1000兆赫茲(模型2)運行的Raspberry PI的性能近似於奔騰300兆赫茲,因此這可以解釋為什麼.NET / MONO剛開始時會感覺很慢。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...