2015-05-22 5 views
5

मैंने अपने कंप्यूटर पर एक तृतीय पक्ष प्रोग्राम स्थापित किया है। मैं .dll के कि ildasm.exe में इस कार्यक्रम के साथ आता है में से एक को खोल दिया और प्रकट निरीक्षण: .net 2.0, 3.0 या 3,5मुझे कैसे पता चलेगा कि कौन सा mscorlib.dll प्रोग्राम उपयोग कर रहा है?

.assembly extern mscorlib 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)    // .z\V.4.. 
    .ver 2:0:0:0 
} 

तो कार्यक्रम या तो उपयोग करता है।

मैंने अपने कंप्यूटर पर mscorlib.dll की खोज की और 61 फाइलें पाईं।

मुझे यह कैसे पता चलेगा कि इनमें से कौन सा प्रोग्राम वास्तव में उपयोग कर रहा है?

मैं भी ध्यान दें कि इनमें से एक गुच्छा निर्देशिका में नाम हैं: C: \ Program Files (x86) \ संदर्भ विधानसभाओं \ Microsoft \ Framework.NETPortable \ v4.0 \ प्रोफाइल \ ProfileXXX \ mscorlib.dll, जहां XXX एक 1-3 अंक संख्या है।

यहां क्या हो रहा है? मैं समझ सकता था कि प्रत्येक .net संस्करण (2.0, 3.0, 3.5 ...) में एक अलग फ़ाइल होगी लेकिन इसमें 61 फ़ाइलों को शामिल नहीं करना चाहिए। इन प्रोफाइलों में से प्रत्येक के बीच क्या अंतर है?

क्या यह .dll नरक समस्या का .NET समाधान कैसा दिखता है? एक ही फ़ाइल के सभी संस्करणों + सार्वजनिक कुंजी सुरक्षित रूप से .dll को इंडेंटिफाइंड करने के लिए।

कौन। डीएलएल का उपयोग नहीं करता है जो अब उपयोग नहीं किया जाता है? ऐसा लगता है कि संभावित रूप से प्रत्येक कार्यक्रम का अपना .NET का संस्करण होता है। डिस्क को अंततः भरना होगा?

+1

क्या आपने पहले से ही [फ़्यूज़न लॉग व्यूअर] (http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.80%29.aspx) की कोशिश की है? मैंने देखा नहीं है अगर इसका उपयोग mscorlib.dll को जांचने के लिए किया जा सकता है। http://stackoverflow.com/a/3952202/255562 –

+1

डुप्लिकेट की तरह दिखता है, हालांकि ये उत्तर कई वर्ष पुराने हैं और पुराने हो सकते हैं। http://stackoverflow.com/questions/227886/how-do-i-determine-the- निर्भरता-of-a-net- appplication – Almo

+0

धन्यवाद आशीष! इस टूल के अनुसार प्रोग्राम सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v2.0.50727 \ mscorwks.dll का उपयोग करता है। Mscorlib.dll की तुलना में एक अलग नाम जो थोड़ा अजीब है लेकिन ठीक है। यह भी कहता है कि इसे जीएसी में देखकर असेंबली मिली। – Andy

उत्तर

7

आपने अभी एक साधारण तथ्य खोजा है, .NET बहुत लोकप्रिय रहा है और 13 वर्षों के बाद इसके कई संस्करण हैं। अधिकांश प्रोग्रामर डेस्कटॉप संस्करण के लिए संस्करण 1.0, 1.1, 2.0 और 4.0 के बारे में जानते हैं। और यह हमेशा एनजीएन द्वारा पूर्व-निर्मित होता है इसलिए 2. गुणा करके गुणा करता है। अधिकांश नहीं जानते कि mscorlib.dll में अप्रबंधित कोड है, इसलिए इसके दो अलग-अलग संस्करण हैं, 32-बिट के लिए एक और 64-बिट कोड के लिए एक, गुणा करके 2 फिर से।

यह सिर्फ डेस्कटॉप के लिए है। फिर आपके पास ऐसे संस्करण हैं जो विभिन्न रनटाइम वातावरण को लक्षित करते हैं। सिल्वरलाइट, 5 अलग-अलग संस्करण हैं। विंडोज फोन, 4 संस्करण। विंडोज स्टोर, 2 संस्करण। और एक्सबॉक्स। वे मायने रखते हैं क्योंकि आप इन लक्ष्यों पर चलने वाले प्रोग्राम बना सकते हैं।

फिर पोर्टेबल क्लास लाइब्रेरीज़ हैं, वे आपको उन लक्ष्यों के सेट का चयन करने की अनुमति देते हैं जिन्हें आप समर्थन देना चाहते हैं। विकल्पों के प्रत्येक क्रमपरिवर्तन का अपना अलग संदर्भ असेंबली है ताकि आप गलती से ऐसे प्रकार का उपयोग न करें जो किसी एक लक्ष्य पर उपलब्ध न हो।

तो असली आश्चर्य यह है कि आपको कुछ मिला।

ध्यान रखें कि आपके द्वारा प्राप्त विशाल बहुमत केवल संदर्भ असेंबली हैं। वे केवल मेटाडेटा, कोई कोड नहीं है, c: \ Program Files (x86) \ संदर्भ असेंबली निर्देशिका में मौजूद है। जब आप अपना प्रोग्राम बनाते हैं तो आप केवल उनका उपयोग करते हैं। रनटाइम पर "वास्तविक एक" का उपयोग किया जाता है, यह आपके द्वारा बनाए गए एक से बहुत अलग है। यह माइक्रोसॉफ्ट का बोझ यह सुनिश्चित करने के लिए है कि वे मेल खाते हैं और आपको कोई समस्या नहीं होगी, वे इसमें बहुत अच्छे हैं।

अन्यथा सूचीबद्ध आपके बारे में कुछ खास नहीं है। यह v2.0 संस्करण के लिए पूछता है, जिसे .NET Framework संस्करण 2.0 में 3.5 के माध्यम से उपयोग किया जाता है। भले ही आपके डेस्कटॉप पर इंस्टॉल किए गए उन संस्करणों में से कोई एक नहीं है, फिर भी यदि आप 4.0, 4.5 या 4.6 हैं तो भी आप इसे चला सकते हैं। डेस्कटॉप सीएलआर स्वचालित रूप से 2.0.0.0 के लिए 4.0.0.0 संस्करण के लिए अनुरोधों का अनुवाद करता है, यह बहुत संगत है।

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

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