2009-08-24 6 views
13

मैं अपनी सरल शुद्ध नेट 2.0 कंसोल उपयोगिता को एक पोर्टेबल एक्सई में परिवर्तित करना चाहता हूं जिसे मैं सिर्फ यूएसबी स्टिक पर रख सकता हूं और बिना किसी चिंता के चल सकता हूं कि सीएलआर और फ्रेमवर्क लाइब्रेरी किसी विशेष मशीन पर स्थापित हैं या नहीं।एक साधारण .Net कंसोल प्रोजेक्ट को मोनो और एमकेबंडल के साथ पोर्टेबल एक्सई में कैसे परिवर्तित करें?

Stackoverflow पहले से ही नेट-परियोजनाओं से आत्म निहित विंडोज व्यय बनाने के लिए Mono और Mkbundle के प्रयोग पर some information है, लेकिन है कि मैं क्या करना चाहते हैं एक कॉम्पैक्ट लेकिन उपयोगी विधिपत्र है।

एक साधारण सी # विजुअल स्टूडियो प्रोजेक्ट से पोर्टेबिलिटी प्राप्त करने के लिए न्यूनतम कदम क्या हैं?

उत्तर

16

मुझे एक सरल तरीका मिला है कि here, हालांकि, जैसा कि मैंने इसे स्वयं परीक्षण नहीं किया है, मैं परिणाम की गारंटी नहीं दे सकता। हमेशा के रूप में वाईएमएमवी।

मूल लेख से उद्धरण (मूल लेख पर धागे के रूप में अच्छी तरह से हालांकि अनुसरण करें):

Mkbundle: अपने अनुप्रयोगों

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

एक वातावरण

सबसे पहले आप नवीनतम मोनो और Cygwin स्थापित करने की आवश्यकता तैयार करें। मोनो स्थापित करना बहुत सरल है ताकि आप कुछ भी खराब नहीं कर सकें। जब आप सिगविन स्थापित करना शुरू करते हैं, तो पूर्ण दृश्य में जाएं, फिर 4 अतिरिक्त पैकेज शामिल करें। ये हैं: जीसीसी, मिंगव, मिंगव-ज़्लिब और ज़्लिब।

अब आपको एक कमांड प्रॉम्प्ट चाहिए। मोनो और सिग्विन दोनों आपके डेस्कटॉप पर कमांड प्रॉम्प्ट के लिए शॉर्टकट बनाते हैं, लेकिन आपको उन्हें एक साथ जोड़ना होगा। यहां एक बैच है जो मेरे लिए करता है। उदाहरण के लिए यदि आपके पास अन्य मोनो संस्करण है, तो आपको इसे बदलने की आवश्यकता हो सकती है।

कोड:

echo Mono version 2.4 Build 6 
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH 
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH% 

chdir C:\cygwin\bin 
bash --login -i 

तो हम एक कमांड प्रॉम्प्ट में अब कर रहे हैं मोनो साथ एक आवेदन बंडल, इस Cygwin मोड चल रहा है। ध्यान दें कि यह अब एक डॉस प्रॉम्प्ट नहीं है, और "डीआईआर" अब और काम नहीं करेगा। फ़ाइलों को सूचीबद्ध करने के लिए linux कमांड "ls" का उपयोग करें। जो फ़ोल्डर आप ब्राउज़ कर रहे हैं वह नीचे दिए गए जैसा है। अरेक एक उपयोगकर्ता नाम है। कोड:

C:\cygwin\home\Arek 

अपने एक्सप्लोरर के साथ इस फ़ोल्डर के लिए ब्राउज़। अब आप इस फ़ोल्डर में 2 फाइलों की प्रतिलिपि बनाते हैं। पहला आपका आवेदन exe है और दूसरा फ़ाइल Mono.dll (2MB) है जिसे आप अपने मोनो फ़ोल्डर में पा सकते हैं। कोड:

C:\Program Files\Mono-2.4\bin 

किसी कारण पूरी प्रक्रिया लंबे फ़ाइल नामों के साथ काम नहीं करता है, तो आपके आवेदन exe का नाम बदलने के लिए। इसे इस पुराने डॉस 8.3 नामकरण का पालन करना चाहिए।

कमांड प्रॉम्प्ट पर वापस जाने दें। आपको अपने आवेदन को बंडल करने के लिए केवल 1 कमांड की आवश्यकता है, और यहां कुछ स्पष्टीकरण दिया गया है।

mkbundle मोनो पैकेज के भीतर एक कार्यक्रम है। -o Bundled1.exe निर्दिष्ट करता है कि कैसे मोनो-बंडल exe नामित किया जाएगा | Winform1.exe का कहना है कि क्या शामिल किया जाएगा, मोनो पुस्तकालयों को वैसे भी शामिल किया जाएगा | --deps आवश्यक है हालांकि मुझे यकीन नहीं है कि यह क्या करता है तो अब आप अपने Bundled1.exe, जो मोनो खुद के साथ-साथ अपनी ऐप्लिकेशन शामिल हो गया

mkbundle -o Bundled1.exe Winform1.exe --deps -z 

: -z उत्पादन एक बहुत exe

कोड सेक होगा। इसे चलाने के लिए आपको मोनो और न ही .NET की आवश्यकता नहीं होनी चाहिए। ध्यान दें कि यह आकार में 4 एमबी या अधिक होगा। उन बंडल exes हल्के वजन नहीं हैं।

संबंधित मुद्दे