Vraag:
Is het mogelijk om .NET-code op de Pi uit te voeren met mono?
berry120
2012-06-13 03:02:29 UTC
view on stackexchange narkive permalink

Is het mogelijk (en haalbaar) om .NET-applicaties op de Raspberry Pi uit te voeren met Mono?

Zo ja, hoe goed lopen ze? Is een eenvoudige GUI bruikbaar, of wordt deze door slechte prestaties realistisch gezien tot opdrachtregelapplicaties?

Misschien is [Portable.NET] (http://www.dotgnu.org/) ook een optie.
https://ms-iot.github.io/content/en-US/GetStarted.htm
Vier antwoorden:
Andrew Larsson
2012-06-13 03:45:42 UTC
view on stackexchange narkive permalink

Er is een StackOverflow-vraag die er behoorlijk op lijkt, Mono op Raspberry Pi. Door mijn eigen onderzoek heb ik echter niets specifieks voor .NET kunnen vinden, maar alleen C #.

U kunt de runtime installeren met APT op een Debian distro door het volgende uit te voeren:

  $ sudo apt-get install mono-runtime  

Je kunt ook (ervan uitgaande dat je een soort GUI hebt zoals LXDE) installeren een trage Mono IDE met:

  $ sudo apt-get install monodevelop  

Voor Arch Linux ARM moet je de runtime installeren via Pacman, zoals:

  $ sudo pacman -S mono  

The Mono IDE kan op een vergelijkbare manier worden geïnstalleerd:

  $ sudo pacman -S monodevelop  
Wat bedoel je met "liever dan alleen C #"?
@JonEgerton C # is een taal terwijl .NET een framework is. U kunt ontwikkelen voor het .NET-framework met C #, maar C # kan op zichzelf staan ​​als een onafhankelijke programmeertaal. Een meer herkenbaar voorbeeld zou kunnen zijn: je ontwikkelt voor Android met Java, maar je kunt een desktopprogramma schrijven met Java. C # is niet afhankelijk van .NET, maar .NET is afhankelijk van C #.
Hallo sorry, dat bedoelde ik niet (ik ben een .Net-ontwikkelaar !!). Het was meer de exclusiviteit van C # en niet de andere .net-familietalen (vb.net, J # F # enz.). Ik heb nog nooit in Mono gekeken en had me niet gerealiseerd dat het alleen C # is.
Oh, ik begrijp wat je zegt. Ik probeerde alleen dingen te vinden op C # en .NET en had niet echt overwogen om de andere .NET-talen te controleren. Van wat ik me herinner, en van alle forumthreads die ik heb gelezen, zag ik geen interesse in ontwikkelaars die probeerden die op de RPi te krijgen.
@Andrew Het is andersom: .NET is niet afhankelijk van C # - maar C # is wel afhankelijk van een runtime * zoals * .NET (of Mono), het is in de praktijk nooit een onafhankelijke programmeertaal. Bovendien is mono volledig taalonafhankelijk (net als .NET), dus nogmaals, het is niet afhankelijk van C #.
Dat is waar, maar een raamwerk zijn, houdt in dat het gebonden is aan een taal. Het kan worden geport / herschreven als een andere implementatie in een andere taal, dus misschien is "gebonden" een iets te sterk woord om te gebruiken.
Installeer MonoDevelop niet op het apparaat. Dat is waaaay te langzaam. Koppel gewoon een netwerkstation met CIFS en compileer op een snelle pc / MAC en test het vervolgens via LAN.
@BerggreenDK Geweldig idee. Ik accepteer uw bewerking als u het antwoord zo aanpast.
@AndrewLarsson - Ik heb nog geen bewerkingsrechten in dit deel van StackoverFlow. Maar koppel gewoon een CIFS-schijf. het is behoorlijk recht vooruit. De FAQ op de website vertelt zelfs hoe.
@AndrewLarsson - Eigenlijk is mijn idee niet echt van mij, mijn ontwikkelaarvaardigheden komen van terug in de tijd met Commodore 64 en Amiga, waar we konden cross-compileren op grotere hardware om betere snelheden te hebben tijdens het testen. Dus het is niets nieuws, het is alleen: "Werk niet harder, werk slimmer" :-)
Guy
2012-07-19 14:57:25 UTC
view on stackexchange narkive permalink

In tegenstelling tot wat vaak wordt gedacht, werkt de door VB.NET gecompileerde code prima op de Raspberry Pi, in ieder geval onder Debian. apt-get install mono-vbnc en voer vervolgens uw VB exe uit als een argument voor mono, bijv. mono yourexe.exe

Ik heb geen prestatiebenchmarks gedaan omdat ik geen prestatie-intensieve app aan het schrijven ben, maar het lijkt me tot nu toe in orde.

elke .NET-taal compileert in dezelfde IL / Bytecode, dus zodra je de compiler activeert (mono-vbnc of welke taal dan ook), is je VB verdwenen en is de IL het ding dat wordt gebruikt in de RUNTIME-kern.
JeeShen Lee
2012-07-16 11:37:44 UTC
view on stackexchange narkive permalink

.NET-code die gebruikmaakt van .NET Framework-bibliotheken kan niet worden uitgevoerd op Raspberry Pi omdat hiervoor een ARM-compatibele versie van NETMF of CLR is vereist. a> om uit te voeren. Op dit moment moet Microsoft Windows nog vrijgeven op ARM (WoA). Raadpleeg Experiment 19 voor Microsoft Research CLR werkt op ARM.

Het uitvoeren van .NET-code (zonder referentie of met .NET Framework Libraries) is mogelijk met Mono aangezien Mono een CLR heeft voor ARM-apparaten.

Zie ook Building Windows for the ARM processor architecture voor informatie over Windows op ARM (WoA ).

Ik denk dat uw verklaring hier niet klopt. Het is mogelijk om een ​​.EXE-bestand te kopiëren dat is gecompileerd op de pc dat verwijst naar en gebruik maakt van .NET-frameworkklassen (bijv. De Socket-klasse of TcpListener-klasse bijvoorbeeld), het ongewijzigd kopiëren naar de RPi en het perfect laten draaien op de RPi onder Mono. Dit komt doordat [Mono de meeste .NET framework-basisklassen vervangt] (http://www.mono-project.com/Compatibility) door een eigen versie, die exact dezelfde naamruimten, typen en interfaces gebruikt.
dodgy_coder
2012-09-11 10:15:09 UTC
view on stackexchange narkive permalink

Ik heb een opdrachtregel .NET-applicatie om met Mono te werken. De app doet in feite iets dat lijkt op port forwarding, gegevens ontvangen via de seriële UART en deze doorsturen via TCP / IP. Het maakt gebruik van de klassen SerialPort, TcpListener, TcpClient en Socket .NET, met slechts kleine wijzigingen aan de afhandelingscode SerialPort. Ik gebruik het Debian soft float-besturingssysteem.

In termen van prestaties was het eerste dat ik tegenkwam een ​​aantal aanzienlijke vertragingen in bepaalde foutopsporings- / traceercode die een reeks bytes formatteerde in een string voor logging doeleinden. Het was 50x langzamer in vergelijking met het draaien op een pc.

Dus ik zou aanraden om enkele prestatie-eenheidstests te schrijven bij het porten van bestaande code naar de RPi.

Voor eenheidstests werkt NUnit prima op de RPi ...

Om NUnit te installeren:

  sudo apt-get install nunit  

Uitvoeren:

  nunit-console appUnderTest .exe  
Snelheid is relatief. Maar een Raspberry PI die draait op 1000 mhz (model 2) presteert ongeveer als een Pentium 300 mhz, dus dat zou kunnen verklaren waarom .NET / MONO om te beginnen nogal traag aanvoelt.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...