2012-03-03 13 views
17

चलाता है मैं कुछ स्पष्ट करने की कोशिश कर रहा हूं।mscorlib.dll/mscoree.dll लोड होता है जब .NET अनुप्रयोग

  1. जब एक नेट सांत्वना आवेदन चलाया जाता है, mscorlib.dll/प्रक्रिया के वर्चुअल पता स्थान में लोड हो mscoree.dll करता है?

  2. mscorlib.dll और mscoree.dll (सीएलआर) प्रबंधित डीएलएस नहीं हैं। क्या वो सही है?

इसके अलावा, एक .NET प्रोग्राम निष्पादित करने के तरीके के बारे में और अधिक समझने के लिए एक अच्छा संसाधन क्या है?

उत्तर

25

हां के बारे में पढ़ सकते हैं। आप हमेशा mscoree.dll लोड हो जाएंगे, यह डिफ़ॉल्ट सीएलआर होस्ट के लिए बूटस्ट्रैपर है। यह एक अप्रबंधित डीएलएल है। प्रत्येक .NET असेंबली में मूल कोड का बहुत कम होता है, बस उस डीएलएल में कूदता है। हालांकि यह हाल ही के विंडोज संस्करणों से सीधे लोड हो जाता है, ओएस लोडर में .NET जागरूकता अंतर्निहित है। जब आप अप्रबंधित डीबगिंग विकल्प, प्रोजेक्ट + गुण, डीबग टैब चालू करते हैं तो आप इसे डीबग + मॉड्यूल विंडो में देख सकते हैं। इसके बाद आप mscorjit.dll, mscorwks.dll और msvcr80.dll, देशी कोड के तीन अन्य भाग भी देखेंगे जिन्हें प्रबंधित कोड चलाने के लिए आवश्यक हैं। सम्मानपूर्वक समय-समय पर संकलक, सीएलआर और सी-रनटाइम समर्थन पुस्तकालय। उनके पास .NET 4.

तकनीकी रूप से mscorlib.dll लोड नहीं होने के कारण संभव है, संकलक के पास उस असेंबली के संदर्भ से बचने के लिए/nostdlib विकल्प है। व्यावहारिक रूप से केवल तभी काम करता है जब आप एक विकल्प प्रदान करते हैं, इस प्रकार सिल्वरलाइट उदाहरण के लिए संकलित हो जाता है। यह अन्यथा मिश्रित-मोड असेंबली है कुछ देशी कोड लेकिन अधिकतर प्रबंधित कोड। इसके कारण 64-बिट ढांचे के लिए इसका एक अलग संस्करण है। आप अप्रबंधित डीबगिंग सक्षम के साथ mscorlib.ni.dll भी देखेंगे, यह असेंबली का ngen-ed संस्करण है।

+0

मुझे कंपाइलर स्विच ('/ nostdlib') के बारे में निश्चित नहीं है लेकिन प्रोजेक्ट गुणों में दृश्य विकल्प -> बिल्ड टैब -> उन्नत दृश्य स्टूडियो में अब और नहीं है। मैंने इसे विजुअल स्टूडियो 2010 में देखा जब आप प्रोजेक्ट गुणों में जाते थे जहां हम defafult 'mscorlib.dll' को संदर्भित करना बंद करने के लिए एक चेकबॉक्स इस्तेमाल करते थे। टोडी के रूप में, 'mscorlib.dll' को संदर्भित किए बिना विजुअल स्टूडियो के माध्यम से .NET एप्लिकेशन बनाना संभव नहीं है। – RBT

6

मैं जेफरी रिचटर की पुस्तक CLR via C# पढ़ने की अनुशंसा करता हूं। यह बहुत स्पष्ट विवरण क्या इसके अलावा yoг इस सवाल से सहायक हो सकता हुड :)

के तहत चल रहा है प्रदान करता है: Why is an assembly .exe file?

3

नेट निष्पादन किसी अन्य पीई फ़ाइलों से अलग नहीं है। तो देशी निष्पादन योग्य में प्रत्येक आयातित डीएल की तरह, mscorlib.dll को .net निष्पादन योग्य की वर्चुअल स्पेस में लोड किया जाता है। यदि यह आपकी रूचि रखते हैं, तो आप पीई फ़ाइल प्रारूप here

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