मैं .NET ढांचे के बिना अपने .NET प्रोग्राम वितरित करना चाहता हूं। क्या एक .NET प्रोग्राम को मशीन कोड में संकलित करना संभव है?क्या मशीन कोड में .NET IL कोड संकलित करना संभव है?
उत्तर
हां, आप Ngen.exe का उपयोग करके प्रीकंपाइल कर सकते हैं, हालांकि यह सीएलआर निर्भरता को नहीं हटाता है।
आपको अभी भी आईएल असेंबली को शिप करना होगा, एनजेन का एकमात्र लाभ यह है कि आपका आवेदन जेआईटी का आह्वान किए बिना शुरू हो सकता है, इसलिए आपको वास्तविक तेज़ स्टार्टअप समय मिल जाता है।
को CLR के माध्यम से सी # अनुसार:
इसके अलावा, विधानसभाओं NGEN का उपयोग कर precompiled आमतौर पर JIT'ed की तुलना में धीमी कर रहे हैं विधानसभाओं क्योंकि JIT कम्पाइलर लक्ष्य मशीन के लिए अनुकूलन कर सकते हैं (32-बिट 64? -बीबी? विशेष रजिस्ट्रार? आदि), जबकि एनजीईएन सिर्फ बेसलाइन संकलन का उत्पादन करेगा।
संपादित करें:
, से CLR के माध्यम से सी # से ऊपर की जानकारी पर कुछ बहस नहीं है के रूप में कुछ लोगों का कहना है कि आप केवल स्थापित प्रक्रिया के तहत लक्षित मशीन पर NGEN को चलाने के लिए आवश्यक हैं।
मुझे नहीं लगता कि यह संभव है। आप एक प्रीजेटेड असेंबली कर सकते हैं लेकिन आपको अभी भी ढांचे की जरूरत है।
Remotesoft एक है: Salamander .NET Linker
मैं इसके साथ कोई अनुभव नहीं है, हालांकि।
इस सवाल से पहले कहा गया है और फिर यह केवल सही जवाब है:
लिंक देखें। होने के नाते, यह संभव है लेकिन कीमत पर। – chrissie1
मुझे लगता है कि आपको नहीं करना चाहिए: यह जेआईटी कंपाइलर का कार्य है।
हालांकि, आप इसे क्लिक करने के लिए क्लिकऑन या विंडोज इंस्टालर का उपयोग कर सकते हैं ताकि लापता ढांचा इतनी बड़ी समस्या न हो: आप इंस्टॉलर को फ्रेमवर्क डाउनलोड करने और इंस्टॉल करने के लिए कह सकते हैं।
क्षमा करें लेकिन बस वीबीनेट में शुरू हो रहा है। ऐसा लगता है कि आपको फ्रेमवर्क डाउनलोड करने की आवश्यकता नहीं है। Vbnet प्रोजेक्ट को संकलित करने में आप फ्रेमवर्क विकल्प शामिल कर सकते हैं। तैनाती करते समय मुझे कुछ त्रुटियां थीं लेकिन विचार इस तरह से प्रतीत होता है। – webzy
कुछ तीसरे पक्ष के उपकरण हैं जो ऐसा करते हैं, उदा।
एक और (महंगा और स्वामित्व, लाइसेंस $ 1599 में शुरू) उत्पाद है कि यह कर सकते हैं Xenocode Postbuild है। हालांकि इसे अपने आप का उपयोग नहीं किया है, इसके साथ ही यह एक छोटे से अफ्रीकी देश के सकल राष्ट्रीय उत्पाद और सभी के लिए लागत है ...
मैं हमेशा सोचा था कि सीएलआर निर्भरता के बिना सीधे सी # कोड कोड को संकलित करना अच्छा होगा हालांकि ....
यदि आप केवल फ्रेमवर्क को तैनात करने के आकार से चिंतित हैं, तो आप this पर पढ़ सकते हैं।
क्या .NET आईएल कोड को मशीन कोड में संकलित करना संभव है?
हां, लेकिन .NET Framework आपके लिए रनटाइम (डिफ़ॉल्ट) या इंस्टॉल समय (ngen) पर करता है।अन्य कारणों से, यह आईएल -> मशीन कोड प्रत्येक इंस्टॉल मशीन पर अलग से किया जाता है ताकि इसे उस विशेष मशीन के लिए अनुकूलित किया जा सके।
मैं .NET Framework के बिना अपने .NET प्रोग्राम वितरित करना चाहता हूं। क्या मशीन कोड में .NET प्रोग्राम संकलित करना संभव है?
नहीं, सभी उद्देश्यों और उद्देश्यों के लिए आप यह नहीं कर सकते हैं। तीसरे पक्ष के कामकाज कुछ परिदृश्यों में काम कर सकते हैं, लेकिन तब तक मैं वास्तव में इसे "प्रबंधित कोड" या ".NET" पर विचार नहीं करता।
मोनो प्रोजेक्ट को देखें: मोनो कमांड --aot विकल्प के साथ। http://www.mono-project.com/AOT
हाँ, अब आप कर सकते हैं! हाल ही में माइक्रोसॉफ्ट ने की घोषणा की। नेट मूल, तकनीक का एक टुकड़ा जो आपके आवेदन को .NET मूल रनटाइम (वे इसे एमआरटी कहते हैं) के साथ एक बाइनरी (वास्तव में एक निष्पादन योग्य और एक गतिशील पुस्तकालय) में संकलित करता है। http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx http://blogs.msdn.com/b/dotnet/archive/2014/04/24/dotnetnative-performance.aspx
ध्यान दें कि यह डेस्कटॉप का समर्थन नहीं करता है – Jack
एनजेन असेंबली धीमी क्यों हैं? लक्ष्य मशीन पर ngen लगाया जाता है, जिससे वास्तव में कोई फर्क नहीं पड़ता है। ओह, और ngen सवाल का वास्तविक जवाब नहीं है। – OregonGhost
डेवलपर द्वारा लक्ष्य मशीन पर नहीं, ऐप को प्रीकंपाइल करने के लिए एनजेन का आह्वान किया जाता है। सीएलआर वाया सी # में एनजेन पर अनुभाग पढ़ें। – FlySwat
जॉन, यह निर्भर करता है। लक्ष्य मशीन पर स्थापना प्रक्रिया द्वारा 'ngen' का आह्वान किया जा सकता है, और जहां तक मुझे पता है कि यह वास्तव में .NET में लागू विभिन्न Microsoft उत्पादों के लिए किया गया है। –