जैसा कि पहले से ही उल्लेख किया गया है, .NET असेंबली में आईएल प्लेटफ़ॉर्म स्वतंत्र है (यही कोई भी CPU सेटिंग का तात्पर्य है)। .NET रनटाइम का जेआईटी (बस-इन-टाइम) कंपाइलर इस मंच को स्वतंत्र बाइट कोड को प्लेटफॉर्म विशिष्ट देशी कोड में उस प्लेटफ़ॉर्म के लिए अनुकूलन के साथ संकलित करेगा। तो आमतौर पर आपको कुछ भी चिंता करने की ज़रूरत नहीं है।
हालांकि, यदि आप प्लेटफॉर्म लक्ष्य के रूप में स्पष्ट रूप से x64 के साथ अपनी परियोजना को सेट करने के लिए सेट करते हैं तो असेंबली अब x86 रनटाइम (और प्लेटफार्म लक्ष्य पर x86 के विपरीत) पर नहीं चलती है। यह केवल तभी उपयोगी होता है जब आपके कोड में मूल x64/x86 पुस्तकालयों जैसे इन-प्रोसेस COM घटक की निर्भरता हो।
जैसा कि रोवलैंड ने एक टिप्पणी में जोड़ा, प्लेटफ़ॉर्म लक्ष्य को अंतर्निहित ऑपरेटिंग सिस्टम के प्रत्यक्षदर्शी से भ्रमित नहीं किया जाना चाहिए। प्लेटफार्म लक्ष्य के रूप में x86 के साथ .NET असेंबली विंडोज के 32-बिट और 64-बिट संस्करणों पर चलेंगे (यानी WOW64 मोड में 32-बिट प्रक्रिया के रूप में)।
वास्तव में, प्लेटफ़ॉर्म लक्ष्य सेटिंग का उपयोग करने के लिए शायद सबसे आम परिदृश्य तब होता है जब आपकी .NET असेंबली में 32-बिट COM घटक का संदर्भ होता है। एक x64 सिस्टम पर असेंबली निष्पादित करने में सक्षम होने के लिए, असेंबली को x86 ध्वज के साथ संकलित किया जाना चाहिए। 64-बिट ओएस पर और के साथ कोई भी CPU सेटिंग सक्षम है, रनटाइम 64-बिट प्रक्रिया में असेंबली निष्पादित करेगा और 64-बिट प्रक्रिया में 32-बिट COM घटक लोड करना विफल हो जाएगा। X86 ध्वज के साथ संकलन 32-बिट प्रक्रिया में असेंबली निष्पादित करने के लिए .NET रनटाइम का कारण बनता है और इस प्रकार COM घटक सुरक्षित रूप से लोड किया जा सकता है।
स्रोत
2010-02-02 12:50:36
x86 .NET ऐप्स x64 पर चलेंगे, लेकिन इसके विपरीत नहीं। –