मेरी समझ यह है कि एक .NET अनुप्रयोग प्लेटफार्म स्वतंत्र है, इसलिए शुद्ध .NET कोड या तो x86 या 64-बिट मशीन पर चलाना चाहिए। जब तक आपका .NET कोड कुछ मूल कोड नहीं कॉल करता है, तो यह प्लेटफार्म निर्भर है। क्या यह सच है?क्या 32-बिट .NET अनुप्रयोग और 64-बिट .NET अनुप्रयोग के बीच कोई अंतर है?
उत्तर
.NET अनुप्रयोगों को x86, x64, या "दोनों" लक्ष्यीकरण के रूप में संकलित किया जा सकता है। आम तौर पर, यदि आप एक COM नियंत्रण पर भरोसा करते हैं जो अन्य प्लेटफॉर्म के लिए उपलब्ध नहीं है, तो आप केवल एक मंच को लक्षित करेंगे।
आपका कोड पूरी तरह से प्लेटफार्म स्वतंत्र होने के लिए संकलित किया जा सकता है, या आप एक विशिष्ट मंच को लक्षित कर सकते हैं। मानक सिफारिश पुस्तकालयों आर्किटेक्चर-तटस्थ (यानी, "कोई भी CPU") छोड़ने और निष्पादन योग्य के लिए x86 को लक्षित करना है। AnyCPU executables are usually more trouble than they're worth: वजहों विजुअल स्टूडियो 2010 डिफ़ॉल्ट रूप से इस दृष्टिकोण का उपयोग करता यहां समझाए गए हैं
बेशक
- दो बहुत ही अलग प्रकार (64 और 86) में चल रहा है उत्पाद जटिलता और परीक्षण की लागत बढ़ जाती है।
- 32-बिट वैसे भी तेज (थोड़ा) होता है।
- कुछ विशेषताएं x64 में उपलब्ध नहीं हैं।
- यदि 4 से अधिक जीबी पता स्थान उपयोगी होगा, तो सही काम करने के लिए को लक्षित करना है x64 और दो प्लेटफ़ॉर्म का समर्थन करने की लागत से बचें।
, अगर आप सिर्फ 86 फिर अपने कोड अभी भी WoW64 के माध्यम से 64 पर चलाना शामिल है लक्ष्य।
मैं निष्पादन योग्य के लिए डिफ़ॉल्ट व्यवहार के लिए बहुत उलझन में हूं। x86 को लक्षित करें? –
हां, एक्जिक्यूटिव्स x86 को लक्षित करते हैं। वीएस -2010 में एक नया समाधान बनाएं, फिर एक कंसोल एप्लिकेशन, एक विंडोज फॉर्म एप्लिकेशन, एक डब्ल्यूपीएफ एप्लीकेशन और एक क्लास लाइब्रेरी जोड़ें। यदि आप कॉन्फ़िगरेशन प्रबंधक को देखते हैं (समाधान पर राइट क्लिक करें, यह संदर्भ मेनू में है), तो आप देखेंगे कि एप्लिकेशन x86 के लिए कॉन्फ़िगर किए गए हैं, जबकि क्लास लाइब्रेरी AnyCPU के लिए सेट है। यह विशेष रूप से परेशान हो सकता है यदि आप गलती से कोई भी एसीसीपीयू बिल्ड बनाते हैं (जैसा कि मैंने कुछ महीने पहले किया था) - आपके निष्पादन योग्य नहीं बनाए जाएंगे, क्योंकि उनके पास डिफ़ॉल्ट रूप से AnyCPU के लिए वैध कॉन्फ़िगरेशन नहीं है। –
x86 का अर्थ है कि यह सख्ती से 32 बिट संकलित करता है, x64 का मतलब है कि यह सख्ती से 64 बिट संकलित करता है और एएनसीपीयू का मतलब है कि यह 32 बिट ओएस पर 64 बिट और 64 बिट ओएस पर 64 बिट संकलित करता है। यदि आप COM/PInvoke पर कोई कॉल करते हैं, तो आपको सही आर्क को लक्षित करने की आवश्यकता है क्योंकि COM/PInvoke संदर्भों के बजाय पॉइंटर्स का उपयोग करते हैं। मैं थोड़ी दूर हो सकता था, लेकिन यह सामान्य विचार है। अनुलेख 64 बिट को अतिरिक्त सीपीयू रजिस्टरों तक पहुंच मिलती है, इसलिए कोड तेज हो सकता है और सभी 64 बिट इन्ट्स की गणना 1 चक्र में की जा सकती है। तो कोई भी Int64 चर तेजी से चला जाएगा। – Bengie
लेख Back to Basics: 32-bit and 64-bit confusion around x86 and x64 and the .NET Framework and CLR मतभेदों को अच्छी तरह से बताता है।
- 1. क्या .NET अनुप्रयोग
- 2. .NET अनुप्रयोग
- 3. .NET अनुप्रयोग
- 4. .NET अनुप्रयोग
- 5. .NET अनुप्रयोग
- 6. .NET अनुप्रयोग
- 7. .NET अनुप्रयोग
- 8. .NET अनुप्रयोग
- 9. .NET अनुप्रयोग
- 10. .NET अनुप्रयोग डोमेन क्या है?
- 11. .NET अनुप्रयोग सर्वर बनाम जावा अनुप्रयोग सर्वर
- 12. एक .NET अनुप्रयोग
- 13. मेरे .NET अनुप्रयोग
- 14. एक .NET अनुप्रयोग
- 15. विंडोज़ .NET अनुप्रयोग
- 16. डाटाबेस तटस्थ .NET अनुप्रयोग
- 17. .NET अनुप्रयोग से एक्सप्लोरर
- 18. प्रोफाइलिंग सी #/.NET अनुप्रयोग
- 19. 64-बिट .NET अनुप्रयोग
- 20. .NET C# अनुप्रयोग
- 21. विंडोज़ .NET अनुप्रयोग
- 22. एक .NET वेब अनुप्रयोग
- 23. एक .NET अनुप्रयोग
- 24. एक .NET अनुप्रयोग
- 25. विंडोज और कंसोल अनुप्रयोग के बीच अंतर
- 26. वेबसाइट और वेब अनुप्रयोग के बीच अंतर?
- 27. फॉर्म आधारित प्रमाणीकरण .NET 2.0 और .Net 4.0 अनुप्रयोग
- 28. मैक ओएस एक्स अनुप्रयोग के लिए .NET अनुप्रयोग?
- 29. साझा करना .NET अनुप्रयोग पूल
- 30. .NET अनुप्रयोग जीसी थ्रेड डेडलॉक
वास्तव में, हर .NET ऐप बहुत सारे मूल कोड चलाता है। और वहां कई देशी कोड हैं जो दोनों स्वादों में उपलब्ध हैं। ऑपरेटिंग सिस्टम सबसे अच्छा उदाहरण है। सीएलआर और जिटर द्वारा पीछा किया गया। –