.net - विजुअल स्टूडियो "कोई सीपीयू" लक्ष्य का क्या अर्थ है?




visual-studio-2008 build (6)

"कोई भी सीपीयू" का अर्थ है कि जब प्रोग्राम शुरू होता है, तो .NET Framework ओएस सीधा के आधार पर पता लगाएगा, चाहे आपके प्रोग्राम को 32 बिट्स या 64 बिट्स में चलाया जाए।

X86 और किसी भी CPU के बीच एक अंतर है: x64 सिस्टम पर, X86 के लिए संकलित आपके निष्पादन योग्य 32-बिट निष्पादन योग्य के रूप में चलाया जाएगा।

जहां तक ​​आपके संदेह जाते हैं, बस विजुअल स्टूडियो 2008 कमांड लाइन पर जाएं और निम्न चलाएं।

dumpbin YourProgram.exe /headers

यह आपको आपके कार्यक्रम के बारे में बताएगा, साथ ही साथ बहुत कुछ।

मुझे विजुअल स्टूडियो 2008 में .NET प्लेटफ़ॉर्म बिल्ड विकल्पों से संबंधित कुछ भ्रम है।

"कोई भी CPU" संकलन लक्ष्य क्या है, और यह किस प्रकार की फाइलें उत्पन्न करता है? मैंने इस "किसी भी सीपीयू" के निष्पादन योग्य आउटपुट की जांच की और पाया कि वे x86 निष्पादन योग्य हैं (जो आने वाले नहीं देख पाएंगे!)। तो, x86 बनाम "कोई भी CPU" निष्पादन योग्य लक्ष्यीकरण के बीच कोई अंतर है?

एक और चीज जिसे मैंने देखा, यह है कि प्रबंधित सी ++ परियोजनाओं में इस मंच को एक विकल्प के रूप में नहीं है। ऐसा क्यों है? क्या इसका मतलब यह है कि "किसी भी CPU" निष्पादन योग्य सादे 32-बिट वाले के बारे में मेरा संदेह सही है?



आलेख देखें विजुअल स्टूडियो .NET प्लेटफ़ॉर्म लक्ष्य समझाया गया

डिफ़ॉल्ट सेटिंग, "कोई भी CPU" का अर्थ है कि असेंबली उस सीपीयू पर मूल रूप से चलती है जो वर्तमान में चालू है। मतलब, यह 64-बिट मशीन पर 64-बिट और 32-बिट मशीन पर 32-बिट के रूप में चलाएगा। यदि असेंबली को 64-बिट एप्लिकेशन से कॉल किया जाता है, तो यह 64-बिट असेंबली के रूप में कार्य करेगा और इसी तरह।

उपर्युक्त लिंक टूटा हुआ बताया गया है, इसलिए यहां एक और आलेख है जो समान स्पष्टीकरण के साथ है: क्या कोई भी सीसीपीयू वास्तव में .NET 4.5 और विजुअल स्टूडियो 11 के रूप में उपयोग करता है


किसी भी सीपीयू का मतलब है कि यह किसी भी मंच पर काम करेगा। ऐसा इसलिए है क्योंकि प्रबंधित कोड जावा के समान है। इसे बाइट कोड में संकलित करने के रूप में सोचें जिसे रन-टाइम पर .NET Framework द्वारा व्याख्या किया गया है।

सी ++ में यह विकल्प नहीं है क्योंकि यह मशीन कोड के लिए संकलित है जो मंच विशिष्ट है।


मैं इस पोस्ट को पढ़ने की सलाह देते हैं

AnyCPU का उपयोग करते समय, अर्थशास्त्र निम्नलिखित हैं:

  • यदि प्रक्रिया 32-बिट विंडोज सिस्टम पर चलती है, तो यह 32-बिट प्रक्रिया के रूप में चलती है। आईएल x86 मशीन कोड के लिए संकलित है।
  • यदि प्रक्रिया 64-बिट विंडोज सिस्टम पर चलती है, तो यह 32-बिट प्रक्रिया के रूप में चलती है। आईएल x86 मशीन कोड के लिए संकलित है।
  • अगर प्रक्रिया एआरएम विंडोज सिस्टम पर चलती है, तो यह 32-बिट प्रक्रिया के रूप में चलती है। आईएलएम एआरएम मशीन कोड में संकलित है।

यहां एक त्वरित अवलोकन है जो विभिन्न निर्माण लक्ष्यों को बताता है।

अपने अनुभव से, यदि आप एक ऐसी परियोजना बनाने की सोच रहे हैं जो x86 और x64 दोनों अनुप्रयोगों पर चलती है, और आपके पास कोई विशिष्ट x64 अनुकूलन नहीं है, तो मैं विशेष रूप से "x86" कहने के लिए बिल्ड को बदल दूंगा।

इसका कारण यह है कि कभी-कभी आप कुछ डीएलएल प्राप्त कर सकते हैं जो कि टकराते हैं या कुछ कोड जो x64 पर्यावरण में दुर्घटनाग्रस्त वाह को हवाएं देते हैं। विशेष रूप से x86 निर्दिष्ट करके, x64 ओएस ऐप को शुद्ध x86 ऐप के रूप में मानता है और सुनिश्चित करता है कि सब कुछ सुचारू रूप से चलता है।





64bit