क्या मोनो का उपयोग करके Pi पर .NET कोड चलाना संभव है?


41

क्या मोनो के साथ रास्पबेरी पाई पर .NET एप्लिकेशन चलाना संभव (और संभव) है ?

यदि हां, तो वे कितनी अच्छी तरह से चलते हैं? एक बुनियादी जीयूआई प्रयोग करने योग्य है, या खराब प्रदर्शन वास्तविक रूप से कमांड लाइन अनुप्रयोगों के लिए इसे प्रतिबंधित करता है?


हो सकता है पोर्टेबलनेट भी एक विकल्प हो।
डेर होकस्टापलर

जवाबों:


25

इसी तरह का एक स्टैकऑवरफ्लो सवाल है, रास्पबेरी पाई पर मोनो । हालाँकि, अपने स्वयं के शोध के माध्यम से, मैं .NET के लिए कुछ भी विशेष नहीं पा सका हूँ, बल्कि केवल C #।

आप निष्पादित करके एक डेबियन डिस्ट्रो पर APT का उपयोग करके रनटाइम स्थापित कर सकते हैं :

$ sudo apt-get install mono-runtime

आप यह भी मान सकते हैं (आपके पास कुछ प्रकार के GUI जैसे LXDE) एक धीमी मोनो आईडीई स्थापित करें:

$ sudo apt-get install monodevelop

के लिए आर्क लिनक्स एआरएम आप के माध्यम से क्रम स्थापित करने की आवश्यकता Pacman तो की तरह,:

$ sudo pacman -S mono

मोनो आईडीई को इसी तरह से स्थापित किया जा सकता है:

$ sudo pacman -S monodevelop

1
"सिर्फ C #" के बजाय आपका क्या मतलब है?
जॉन एगर्टन

@JonEgerton C # एक भाषा है जबकि .NET एक फ्रेमवर्क है। आप .NET फ्रेमवर्क के लिए C # के साथ विकसित कर सकते हैं, लेकिन C # एक स्वतंत्र प्रोग्रामिंग भाषा के रूप में अकेले खड़े हो सकते हैं। एक अधिक भरोसेमंद उदाहरण हो सकता है: आप जावा के साथ एंड्रॉइड के लिए विकसित होते हैं, लेकिन आप जावा के साथ एक डेस्कटॉप प्रोग्राम लिख सकते हैं। C # .NET पर निर्भर नहीं करता है, लेकिन .NET C # पर निर्भर करता है।
एंड्रयू लार्सन

क्षमा करें, यही मेरा मतलब नहीं है (मैं एक। नेट देव !!)। यह C # की विशिष्टता थी। अन्य .net पारिवारिक भाषाओं (vb.net, J # F # आदि) की नहीं। मैंने कभी मोनो में नहीं देखा, और महसूस नहीं किया कि यह केवल C # है।
जॉन एगर्टन

5
@Andrew यह दूसरा तरीका है दौर: .NET C # पर निर्भर नहीं करता है - लेकिन C # .NET (या मोनो) जैसे रनटाइम पर निर्भर करता है , यह कभी भी एक स्वतंत्र प्रोग्रामिंग भाषा का अभ्यास नहीं करता है। इसके अलावा, मोनो पूरी तरह से भाषा अज्ञेय है (जैसा कि .NET है), इसलिए एक बार फिर यह सी # पर निर्भर नहीं करता है।
कोनराड रुडोल्फ

1
डिवाइस पर MonoDeveloper स्थापित न करें। Thats waaaay को धीमा करने के लिए। बस CIFS के साथ एक नेटवर्कड्राइव माउंट करें और एक तेज़ PC / MAC पर संकलित करें और फिर LAN पर परीक्षण करें।
बेरग्रीनडीके

8

लोकप्रिय धारणा के विपरीत, VB.NET संकलित कोड कम से कम डेबियन के तहत रास्पबेरी पाई पर ठीक चलता है। apt-get install मोनो-वीबीएनसी और उसके बाद मोनो के लिए अपने VB exe को एक तर्क के रूप में चलाएं जैसे mono yourex.exe।

मैंने कोई प्रदर्शन बेंचमार्क नहीं किया है क्योंकि मैं एक प्रदर्शन गहन ऐप नहीं लिख रहा हूं लेकिन अब तक ठीक है।


कोई भी .NET भाषा समान IL / Bytecode में संकलित होती है, इसलिए एक बार जब आप संकलक (मोनो-वीबीएनसी या जो भी भाषा) को ट्रिगर करते हैं, तो आपका VB चला जाता है और IL RUNTIME कोर में उपयोग होने वाली चीज है।
बेरग्रीनडीके

6

.NET कोड जो .NET फ्रेमवर्क पुस्तकालयों का उपयोग कर रहा है, वह रास्पबेरी पाई पर नहीं चल सकता है क्योंकि इसे चलाने के लिए NETMF या CLR के एआरएम संगत संस्करण की आवश्यकता होती है । अब तक, Microsoft ने अभी तक एआरएम (WoA) पर विंडोज जारी नहीं किया है। एआरएम पर माइक्रोसॉफ्ट रिसर्च सीएलआर कार्यों के लिए प्रयोग 19 का संदर्भ लें ।

हालाँकि, .NET कोड (संदर्भ के बिना या .NET फ्रेमवर्क लाइब्रेरी का उपयोग किए बिना) मोनो का उपयोग करना संभव है क्योंकि मोनो में एआरएम उपकरणों के लिए सीएलआर है।

एआरएम (WoA) पर विंडोज पर जानकारी के लिए ARM प्रोसेसर आर्किटेक्चर के लिए विंडोज का निर्माण भी देखें ।


3
मुझे लगता है कि आपका बयान यहां गलत है। एक .EXE फ़ाइल की प्रतिलिपि बनाना संभव है, जो पीसी पर संकलित किया गया था। जो .NET फ्रेमवर्क क्लासेस (उदाहरण के लिए सॉकेट क्लास या TcpListener क्लास) का उपयोग करता है, इसे RPI को अपरिवर्तित कॉपी करें, और इसे पूरी तरह से ऑन करें मोनो के तहत आरपीआई। ऐसा इसलिए है क्योंकि मोनो बिल्कुल उसी नामस्थान, प्रकार और इंटरफेस का उपयोग करते हुए, अपने स्वयं के संस्करण के साथ .NET फ्रेमवर्क बेस कक्षाओं में से अधिकांश को प्रतिस्थापित करता है।
dodgy_coder

4

मुझे मोनो के साथ काम करने के लिए एक कमांड लाइन .NET एप्लिकेशन मिला है। ऐप मूल रूप से पोर्ट फॉरवर्डिंग के लिए कुछ कर रहा है, सीरियल UART के माध्यम से प्राप्त डेटा ले रहा है और इसे TCP / IP पर अग्रेषित कर रहा है। इसमें SerialPort, TcpListener, TcpClient और Socket .NET क्लासेस का उपयोग किया गया है, केवल SerialPort हैंडलिंग कोड के लिए आवश्यक मामूली बदलावों के साथ। मैं डेबियन सॉफ्ट फ्लोट ओएस का उपयोग कर रहा हूं।

प्रदर्शन के संदर्भ में, पहली बात जो मुझे सामने आई, वह थी कुछ डिबगिंग / ट्रेस कोड में कुछ महत्वपूर्ण मंदी। पीसी पर चलने की तुलना में यह 50x धीमा था।

इसलिए मैं आरपीआई को मौजूदा कोड पोर्ट करते समय कुछ प्रदर्शन इकाई परीक्षण लिखने की सलाह दूंगा।

यूनिट परीक्षण के लिए, NUnit RPI पर ठीक काम करता है ...

NUnit स्थापित करने के लिए:

sudo apt-get install nunit

चलाने के लिए:

nunit-console appUnderTest.exe

1
गति एक सापेक्ष चीज है। लेकिन 1000 mhz (मॉडल 2) पर चलने वाला रास्पबेरी PI एक पेंटियम 300 mhz की तरह लगभग प्रदर्शन करता है, ताकि यह समझा जा सके कि .NET / MONO एक शुरुआत के लिए धीमा क्यों महसूस करता है।
बेरग्रीनडीके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.