'मोनो foo.exe' टाइप किए बिना एक मोनो प्रोग्राम चलाना


13

उबंटू पर एक .net प्रोग्राम चलाते समय मुझे केवल foo.exe या आइकन पर डबल-क्लिक करने के बजाय "मोनो foo.exe" टाइप करना होगा। वहाँ सिर्फ foo.exe चलाने के लिए कोई रास्ता नहीं है?

जवाबों:


17

क्या यह लिंक मदद करता है? रनिंग मोनो

Binfmt का उपयोग करने पर मोनो परियोजना से:

पंजीकरण .exe गैर-देशी बायनेरिज़ के रूप में (केवल लिनक्स)

क्योंकि यह एक लिनक्स-विशिष्ट विशेषता है, हम अनुशंसा नहीं करते हैं कि डेवलपर्स इस समाधान को तैनात करते हैं, क्योंकि यह उनकी स्क्रिप्ट की पोर्टेबिलिटी को सीमित करेगा।

इसके अतिरिक्त, यह तंत्र अनुप्रयोग परिनियोजन दिशानिर्देशों के अनुसार काम नहीं करता है ।

आप एक सिस्टमव्यापी परिवर्तन भी कर सकते हैं, और गैर-देशी बायनेरिज़ के रूप में exe फ़ाइलों को पंजीकृत करने के लिए binfmt का उपयोग कर सकते हैं। फिर, जब एक exe फ़ाइल लॉन्च करने का प्रयास किया जाता है, तो कर्नेल कमांड को संभालने के लिए मोनो दुभाषिया चलाएगा। Binfmt का उपयोग WINE, या जावा .class फ़ाइलों का उपयोग करके JVM का उपयोग करके Windows निष्पादनयोग्य को लॉन्च करने के लिए किया जा सकता है। कर्नेल के साथ निर्वासन रजिस्टर करने के लिए:

रूट बनें और इस आदेश के साथ अपने कर्नेल में बिनफ़एमटी मॉड्यूल चालू करें:

sudo apt-get install binfmt-support
modprobe binfmt_misc

इसके अलावा, आप modprobeअपने /etc/rc.localबूट स्क्रिप्ट में कमांड जोड़ना चाहते हैं , ताकि इसे बूट पर निष्पादित किया जा सके।

अपनी /etc/fstabफ़ाइल के नीचे की रेखा जोड़ें :

binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none

फिर, अपने सिस्टम को बूट पर निम्न कमांड चलाएं:

echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register

अपने .exe फ़ाइलों को निष्पादन योग्य फ़ाइल सिस्टम में चिह्नित करना सुनिश्चित करें:

chmod +x myprogram.exe

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


Binfmt_misc विकल्प के लिए +1, जो लिनक्स पर सबसे छोटा वर्कअराउंड है
mario

1
FATAL: Module binfmt not found12.04 में मिला
रियाद

10

एक स्टार्टअप स्क्रिप्ट बनाएं।

एक सादा पाठ संपादक खोलें, इसे जोड़ें:

#!/bin/bash
mono foo.exe &

अपने सेटअप के आधार पर, आपको foo.exe के लिए पूर्ण पथ का उपयोग करने की आवश्यकता हो सकती है।

उदाहरण के लिए फ़ाइल को सहेजें foo.sh

इसे निष्पादित करें:

sudo chmod a+x foo.sh

अब आपको डबल क्लिक करके foo.exe शुरू करने में सक्षम होना चाहिए foo.sh


2

आप फ़ाइल एक्सटेंशन '.exe' को Nautilus पर निष्पादित करने के लिए जोड़ सकते हैं /usr/bin/mono


1

मुझे पता है कि यह एक पुराना प्रश्न है लेकिन मैंने इसे Google के माध्यम से पाया और यह मुझे सोच में पड़ गया। यह एक प्रमुख हैक है लेकिन आप डाउनलोड कर सकते हैं

https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh

अपने घर में और निम्नलिखित को .bashrc में जोड़ें

source ~/.bash-preexec.sh
preexec() {
  if [[ $1 =~ [^\s]+\.exe$ ]]; then
    eval "$1() { return 1; }"
    export -f $1
    /usr/bin/mono $1
  fi
}
precmd() { [[ $1 =~ [^\s]+\.exe$ ]]; unset -f $1; }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.