2010-01-09 11 views
32

में एक स्टैंड-अलोन निष्पादन योग्य (.exe) के लिए संकलित करें मैं विजुअल स्टूडियो में स्टैंड-अलोन एक्सई कैसे बना सकता हूं। यह सिर्फ एक साधारण कंसोल एप्लिकेशन है जो मुझे लगता है कि उपयोगकर्ता एक छोटे कंसोल एप्लिकेशन को इंस्टॉल नहीं करना चाहते हैं। मैंने दृश्य स्टूडियो कमांड प्रॉम्प्ट का उपयोग करके एक साधारण सीपीपी फ़ाइल संकलित की। क्या exe काम करेगा भले ही .NET ढांचा स्थापित नहीं है? मैंने देशी सी ++ कोड का इस्तेमाल किया।विजुअल स्टूडियो

+0

आप कैसे एक .exe कि कोई .NET रनटाइम के बिना भी उपयोगकर्ताओं के लिए स्थापित की जरूरत बनाने के लिए कह रहे हैं? – RedFilter

+2

सी ++ काम asveikau होगा? इसके बारे में कोई लेख? –

+0

ILMerge यह बाद में डुप्लिकेट पोस्ट पर सुझाव दिया गया था: http://stackoverflow.com/questions/3261942/net-whole-application-as-a-single-exe-file – JohnLBevan

उत्तर

19

प्रबंधित वातावरण का उपयोग करने वाली कुछ भी (जिसमें सी # और वीबीएनईटी में लिखी गई कुछ भी शामिल है) को .NET ढांचे की आवश्यकता होती है। आप उस परिदृश्य में अपने .EXE को फिर से वितरित कर सकते हैं, लेकिन अगर उन्हें पहले से ही नहीं है तो उन्हें उपयुक्त ढांचे को स्थापित करने की आवश्यकता होगी।

+0

क्या मैं इसे एक्सई में संकलित करने के लिए सी ++/सीएलआई या देशी सी ++ का उपयोग कर सकता हूं? –

+1

यह किसी भी मायने में कोई फर्क नहीं पड़ता कि क्या। लेकिन अगर आप इसे चलाने का प्रयास करते हैं तो .NET स्थापित नहीं होने पर यह एक त्रुटि लौटाएगा। – jalf

+0

यहां तक ​​कि नौसेना सी ++? –

45

अपने प्रोजेक्ट फ़ोल्डर के अंदर उनका एक बिन फ़ोल्डर है। आपके बिन फ़ोल्डर के अंदर, 2 फ़ोल्डर्स, रिलीज और डीबग हैं। आपके पॉलिश .exe के लिए, आप अपने रिलीज फ़ोल्डर में जाना चाहते हैं।

मैं काफी यकीन है कि अगर thats क्या आप पूछ

+2

यह मेरे लिए काम किया –

+0

यह मेरे लिए भी काम करता है, यह विश्वास नहीं कर सकता कि मुझे इसे खोजने तक कितना समय लग रहा था। –

+6

नोट: बिल्ड> कॉन्फ़िगरेशन प्रबंधक के तहत रिलीज़ विकल्प चुनकर आपको रिलीज़ संस्करण बनाना होगा यदि यह पहले से ही नहीं बनाया गया है। – brandaemon

3

मैं @Marlon से सहमत नहीं हूँ। जब आप रिलीज कॉन्फ़िगरेशन के साथ अपने सी # प्रोजेक्ट को संकलित करते हैं, तो आप अपने प्रोजेक्ट के "बिन/रिलीज" फ़ोल्डर में अपने एप्लिकेशन के निष्पादन योग्य पाएंगे। यह एक साधारण आवेदन के लिए काम करना चाहिए।

लेकिन, यदि आपके एप्लिकेशन के पास कुछ बाहरी डीएल पर निर्भरता है, तो मैं आपको विजुअलस्टूडियो के साथ एक सेटअपप्रोजेक्ट बनाने का सुझाव देता हूं। ऐसा करने से, प्रोजेक्ट विज़ार्ड आपके एप्लिकेशन की सभी निर्भरताओं को ढूंढ लेगा और उन्हें इंस्टॉलेशन फ़ोल्डर में (librairies) जोड़ देगा। अंत में, आपको बस इतना करना होगा कि उपयोगकर्ता कंप्यूटर पर सेटअप चलाएं और अपना सॉफ़्टवेयर इंस्टॉल करें।

1

मुझे सी # के रूप में किए गए छोटे कंसोल एप्लिकेशन को तैनात करने में कभी समस्या नहीं हुई है। एकमात्र समस्या जिसे आप टक्कर दे सकते हैं, .NET ढांचे पर निर्भरता होगी, लेकिन यहां तक ​​कि यह एक बड़ी समस्या नहीं होनी चाहिए। आप ढांचे के संस्करण 2.0 का उपयोग करने का प्रयास कर सकते हैं, जो पहले से ही अधिकांश पीसी पर होना चाहिए।

देशी, अप्रबंधित सी ++ का उपयोग करके, आपको .NET ढांचे पर कोई निर्भरता नहीं होनी चाहिए, इसलिए आपको वास्तव में सुरक्षित होना चाहिए। बस निष्पादन योग्य और किसी भी साथ वाली फाइलों को पकड़ें (यदि कोई है) और उन्हें तैनात करें; यदि आप नहीं चाहते हैं तो उन्हें स्थापित करने की कोई आवश्यकता नहीं है।

18

यदि मैं आपको सही ढंग से समझता हूं, तो आप विजुअल स्टूडियो (जो मुझे पता है) के तहत नहीं कर सकते हैं। संकलक को वास्तविक, स्टैंडअलोन निष्पादन योग्य उत्पन्न करने के लिए मजबूर करने के लिए (जिसका अर्थ है कि आप किसी अन्य भाषा की तरह सी # का उपयोग करते हैं) आप प्रोग्राम mkbundle (मोनो के साथ भेजे गए) का उपयोग करते हैं। यह आपके सी # ऐप को एक वास्तविक, संकलित निष्पादन योग्य में संकलित करेगा।

इंटरनेट के आसपास इस बारे में बहुत सारी गलत धारणाएं हैं। यह कुछ लोगों की स्थिति जैसे नेट फ्रेमवर्क के उद्देश्य को हराने नहीं देता है, क्योंकि अगर आप इन सुविधाओं का उपयोग शुरू करने के लिए करते हैं तो आप नेट फ्रेमवर्क की भविष्य की विशेषताओं को कैसे खो सकते हैं? और जब आप अपने ऐप के अपडेट भेजते हैं, तो यह इंस्टॉलर बनाने से पहले एमकेबंडल प्रोसेसर के माध्यम से इसे चलाने के लिए बिल्कुल कठिन काम नहीं है। आपके ऐप को देशी गति पर चलाने में एक गति लाभ भी शामिल है (क्योंकि अब यह मूल है)।

सी ++ या डेल्फी में आपके पास एक ही सिस्टम है, लेकिन मध्य एमएसआईएल परत के बिना। तो यदि आप नामस्थान या स्रोतफाइल (डेल्फी के तहत एक इकाई कहा जाता है) का उपयोग करते हैं, तो यह संकलित और आपके अंतिम बाइनरी में शामिल है। तो आपकी अंतिम बाइनरी बड़ी होगी (पढ़ें: वास्तविक ऐप के लिए "सामान्य" आकार)। आपके द्वारा .NET में उपयोग किए गए ढांचे के कुछ हिस्सों के लिए भी यही है, ये आपके ऐप में भी शामिल हैं। हालांकि, स्मार्ट लिंकिंग एक बड़ी मात्रा में दाढ़ी देता है।

उम्मीद है कि यह मदद करता है!

0

मुझे नहीं लगता कि यह पूछना संभव है कि प्रश्नकर्ता क्या पूछता है कि सभी परियोजना फ़ाइलों को एक .exe में विलय करके डीएल नरक से बचाना है।

ढांचा इस मुद्दे को एक रेड हेरिंग है। समस्या यह होती है कि जब आपके पास एक लाइब्रेरी के आधार पर कई परियोजनाएं होती हैं तो पुस्तकालयों को सिंक में रखने के लिए यह एक पिटा है। प्रत्येक बार जब लाइब्रेरी बदलती है, तो सभी .exes जो उस पर निर्भर करते हैं और अपडेट नहीं होते हैं, वे मर जाएंगे।

सी जानने के लिए के रूप में एक प्रतिक्रिया किया लोगों बोलने अभिमानी और अज्ञानी है।

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