Mono kullanarak Pi'de .NET kodu çalıştırmak mümkün mü?


Yanıtlar:


25

Buna benzer bir StackOverflow sorusu var, Ahududu Pi'deki Mono . Bununla birlikte, kendi araştırmamla, .NET'e özgü bir şey bulamadım, ama daha çok sadece C #.

Çalışma zamanını aşağıdakileri yürüterek bir Debian dağıtımında APT kullanarak yükleyebilirsiniz :

$ sudo apt-get install mono-runtime

Ayrıca (LXDE gibi bir çeşit GUI'ye sahip olduğunuzu varsayarak) aşağıdakilerle yavaş bir Mono IDE kurabilirsiniz:

$ sudo apt-get install monodevelop

For Arch Linux ARM sen aracılığıyla çalışma zamanını yüklemeniz gerekir Pacman şöyle:

$ sudo pacman -S mono

Mono IDE benzer şekilde kurulabilir:

$ sudo pacman -S monodevelop

1
"Sadece C # yerine" derken ne demek istiyorsun?
Jon Egerton

.NET bir çerçeve iken @JonEgerton C # bir dildir. .NET Framework için C # ile geliştirebilirsiniz, ancak C # bağımsız bir programlama dili olarak tek başına durabilir. Daha hoş bir örnek olabilir: Java ile Android için geliştirirsiniz, ancak Java ile bir masaüstü programı yazabilirsiniz. C #, .NET'e bağımlı değildir, ancak .NET, C #'ya bağlıdır.
Andrew Larsson

Merhaba üzgünüm, demek istediğim bu değil (Ben bir .NET dev !!). Daha çok C # münhasırlığıydı, diğer .net ailesi dilleri değil (vb.net, J # F # etc). Mono'ya hiç bakmadım ve bunun sadece C # olduğunu anlamadım.
Jon Egerton

5
@Andrew Bu tam tersi bir durum: .NET C # 'ya dayanmaz - fakat C # .NET (ya da Mono) gibi bir çalışma zamanına bağlıdır, pratikte asla bağımsız bir programlama dili değildir. Ayrıca, mono tamamen agnostiktir (.NET gibi), bu yüzden bir kez daha C # 'ya bağlı değildir.
Konrad Rudolph

1
MonoDeveloper'ı cihaza yüklemeyin. Bu yavaşlatmak için waaaay. Sadece CIFS ile bir ağ sürücüsü kurun ve hızlı bir PC / MAC üzerinde derleyin ve LAN üzerinden test çalıştırın.
BerggreenDK

8

Popüler inanışın aksine, VB.NET derlenmiş kodu Raspberry Pi'de en azından Debian'ın altında çalışıyor. apt-get install mono-vbnc ve ardından VB exe'nizi mono, örneğin mono yourexe.exe argümanı olarak çalıştırın

Performansı yoğun bir uygulama yazmadığım için ancak şu ana kadar iyi göründüğüm için hiçbir performans testi yapmadım.


Herhangi bir .NET dili aynı IL / Bytecode'da derlenir, bu nedenle derleyiciyi (mono-vbnc veya hangi dilde olursa olsun) tetikledikten sonra VB'niz kaybolur ve IL RUNTIME çekirdeğinde kullanılan şeydir.
BerggreenDK

6

Kullandığı .NET kod .NET Framework kütüphanelerini bunun bir ARM uyumlu sürümü gereğine göre Ahududu Pi üzerinde çalıştıramazsınız NETMF veya CLR çalıştırmak için. Şu an itibariyle, Microsoft henüz Windows'ta ARM (WoA) sürümünü yayınlamamıştır. ARM üzerinde Microsoft Research CLR çalışmaları için Deney 19'a bakınız .

Bununla birlikte, .NET kodunun çalıştırılması (referans olmadan veya .NET Framework Kitaplıklarının kullanılması), Mono'nun ARM cihazları için bir CLR'ye sahip olması nedeniyle Mono kullanılarak mümkündür.

Ayrıca , ARM üzerinde Windows hakkında bilgi için bkz. ARM işlemci mimarisi için Windows oluşturma.


3
Bence ifadeniz yanlış. .NET framework sınıflarına başvuruda bulunan ve kullanan PC'de derlenmiş bir .exe dosyasını (örneğin, Socket sınıfı veya örneğin TcpListener sınıfı) kopyalamak, RPI'ya değiştirmeden kopyalamak ve kusursuz bir şekilde çalıştırmak mümkündür. Mono altında RPI. Bunun nedeni, Mono’nun .NET Framework temel sınıflarının çoğunu tam olarak aynı ad alanlarını, türlerini ve arayüzlerini kullanarak kendi sürümüyle değiştirmesidir.
dodgy_coder 11:12

4

Mono ile çalışmak için bir komut satırı .NET uygulaması var. Uygulama temel olarak port yönlendirme, seri UART ile alınan verileri alma ve TCP / IP üzerinden iletme gibi bir şey yapıyor. SerialPort, TcpListener, TcpClient ve Socket .NET sınıflarını kullanır, SerialPort işleme kodunda yalnızca küçük değişiklikler gerekir. Debian soft float işletim sistemini kullanıyorum.

Performans açısından karşılaştığım ilk şey, günlük tutma amacıyla bir bayt dizisini biçimlendiren bazı hata ayıklama / izleme kodundaki bazı önemli yavaşlamalar oldu. PC'de çalışmaya kıyasla 50 kat daha yavaştı.

Bu nedenle, mevcut kodu RPI'ya aktarırken bazı performans birimi testlerini yazmanızı öneririm.

Birim test için, NUnit RPI'de iyi çalışıyor

NUnit'i kurmak için:

sudo apt-get install nunit

Koşmak:

nunit-console appUnderTest.exe

1
Hız göreceli bir şeydir. Ancak 1000 mhz'de çalışan bir Ahududu PI (model 2) yaklaşık olarak bir Pentium 300 mhz gibi çalışır, bu nedenle .NET / MONO'nun neden bir başlangıç ​​için yavaş davrandığını açıklayabilir.
BerggreenDK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.