2008-09-26 10 views

उत्तर

19

हां, आप Ngen.exe का उपयोग करके प्रीकंपाइल कर सकते हैं, हालांकि यह सीएलआर निर्भरता को नहीं हटाता है।

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

को CLR के माध्यम से सी # अनुसार:

इसके अलावा, विधानसभाओं NGEN का उपयोग कर precompiled आमतौर पर JIT'ed की तुलना में धीमी कर रहे हैं विधानसभाओं क्योंकि JIT कम्पाइलर लक्ष्य मशीन के लिए अनुकूलन कर सकते हैं (32-बिट 64? -बीबी? विशेष रजिस्ट्रार? आदि), जबकि एनजीईएन सिर्फ बेसलाइन संकलन का उत्पादन करेगा।

संपादित करें:

, से CLR के माध्यम से सी # से ऊपर की जानकारी पर कुछ बहस नहीं है के रूप में कुछ लोगों का कहना है कि आप केवल स्थापित प्रक्रिया के तहत लक्षित मशीन पर NGEN को चलाने के लिए आवश्यक हैं।

+0

एनजेन असेंबली धीमी क्यों हैं? लक्ष्य मशीन पर ngen लगाया जाता है, जिससे वास्तव में कोई फर्क नहीं पड़ता है। ओह, और ngen सवाल का वास्तविक जवाब नहीं है। – OregonGhost

+0

डेवलपर द्वारा लक्ष्य मशीन पर नहीं, ऐप को प्रीकंपाइल करने के लिए एनजेन का आह्वान किया जाता है। सीएलआर वाया सी # में एनजेन पर अनुभाग पढ़ें। – FlySwat

+3

जॉन, यह निर्भर करता है। लक्ष्य मशीन पर स्थापना प्रक्रिया द्वारा 'ngen' का आह्वान किया जा सकता है, और जहां तक ​​मुझे पता है कि यह वास्तव में .NET में लागू विभिन्न Microsoft उत्पादों के लिए किया गया है। –

1

मुझे नहीं लगता कि यह संभव है। आप एक प्रीजेटेड असेंबली कर सकते हैं लेकिन आपको अभी भी ढांचे की जरूरत है।

19

Remotesoft एक है: Salamander .NET Linker

मैं इसके साथ कोई अनुभव नहीं है, हालांकि।

+1

इस सवाल से पहले कहा गया है और फिर यह केवल सही जवाब है:

लिंक देखें। होने के नाते, यह संभव है लेकिन कीमत पर। – chrissie1

1

मुझे लगता है कि आपको नहीं करना चाहिए: यह जेआईटी कंपाइलर का कार्य है।

हालांकि, आप इसे क्लिक करने के लिए क्लिकऑन या विंडोज इंस्टालर का उपयोग कर सकते हैं ताकि लापता ढांचा इतनी बड़ी समस्या न हो: आप इंस्टॉलर को फ्रेमवर्क डाउनलोड करने और इंस्टॉल करने के लिए कह सकते हैं।

+0

क्षमा करें लेकिन बस वीबीनेट में शुरू हो रहा है। ऐसा लगता है कि आपको फ्रेमवर्क डाउनलोड करने की आवश्यकता नहीं है। Vbnet प्रोजेक्ट को संकलित करने में आप फ्रेमवर्क विकल्प शामिल कर सकते हैं। तैनाती करते समय मुझे कुछ त्रुटियां थीं लेकिन विचार इस तरह से प्रतीत होता है। – webzy

5

एक और (महंगा और स्वामित्व, लाइसेंस $ 1599 में शुरू) उत्पाद है कि यह कर सकते हैं Xenocode Postbuild है। हालांकि इसे अपने आप का उपयोग नहीं किया है, इसके साथ ही यह एक छोटे से अफ्रीकी देश के सकल राष्ट्रीय उत्पाद और सभी के लिए लागत है ...

0

मैं हमेशा सोचा था कि सीएलआर निर्भरता के बिना सीधे सी # कोड कोड को संकलित करना अच्छा होगा हालांकि ....

1

यदि आप केवल फ्रेमवर्क को तैनात करने के आकार से चिंतित हैं, तो आप this पर पढ़ सकते हैं।

3

क्या .NET आईएल कोड को मशीन कोड में संकलित करना संभव है?

हां, लेकिन .NET Framework आपके लिए रनटाइम (डिफ़ॉल्ट) या इंस्टॉल समय (ngen) पर करता है।अन्य कारणों से, यह आईएल -> मशीन कोड प्रत्येक इंस्टॉल मशीन पर अलग से किया जाता है ताकि इसे उस विशेष मशीन के लिए अनुकूलित किया जा सके।

मैं .NET Framework के बिना अपने .NET प्रोग्राम वितरित करना चाहता हूं। क्या मशीन कोड में .NET प्रोग्राम संकलित करना संभव है?

नहीं, सभी उद्देश्यों और उद्देश्यों के लिए आप यह नहीं कर सकते हैं। तीसरे पक्ष के कामकाज कुछ परिदृश्यों में काम कर सकते हैं, लेकिन तब तक मैं वास्तव में इसे "प्रबंधित कोड" या ".NET" पर विचार नहीं करता।

2

संकलन भाग के लिए IL2CPU है।

+0

टूटी हुई लिंक (-1) –

+0

निश्चित, अजीब सोच होती है –

+0

मुझे इस कंपाइलर का एक स्टैंडअलोन निष्पादन योग्य पसंद आएगा! लेकिन जो मैंने पढ़ा है उससे यह वीएस के साथ एकीकृत है और अब विंडोज के एक्जिक्यूटिव का उत्पादन नहीं करता है। – Jack

3

हाँ, अब आप कर सकते हैं! हाल ही में माइक्रोसॉफ्ट ने की घोषणा की। नेट मूल, तकनीक का एक टुकड़ा जो आपके आवेदन को .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

+1

ध्यान दें कि यह डेस्कटॉप का समर्थन नहीं करता है – Jack

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