2010-06-04 12 views
5

एमएसडीएन आलेख How the Runtime Locates Assemblies के माध्यम से पढ़ने और this पढ़ने के बाद, मैं अभी भी अनिश्चित हूं कि रनटाइम पर असेंबली नामों को कैसे हल किया जाता है।.NET असेंबली भ्रम को हल करने

ईजी। अगर मेरे पास मेरी प्रोजेक्ट में कुछ डीएलएल फ़ाइल का संदर्भ है, तो मैं संकलित और तैनाती करता हूं, क्या यह संदर्भित डीएलएल फ़ाइल का एक नया संस्करण उठाएगा यदि मैं केवल पुराने को प्रतिस्थापित करता हूं जिसे वास्तव में संकलन समय पर संदर्भित किया गया था? क्या इससे कोई फर्क पड़ता है कि प्रोजेक्ट फ़ाइल में संदर्भ संदर्भित असेंबली के संस्करण इत्यादि को निर्दिष्ट करता है?

किसी भी ज्ञान का स्वागत करते हैं

उत्तर

0

जवाब अपने प्रश्नों के हाँ जब तक जब तक आप विधानसभा के लिए संदर्भ के लिए संपत्तियों में False को Specific Version सेट के रूप में।

+0

यह सही नहीं है, यह केवल संकलन समय पर लागू होता है। –

1

इस बारे में सीखने के लिए सबसे अच्छी जगह Grimes Fusion Workshop में here मिल सकती है। यह समझना अभी भी बहुत व्यापक है।

0

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

2

यदि असेंबली जीएसी में नहीं मिली है तो सीएलआर इसे "प्रोबिंग पथ" में खोजेगा। जो डिफ़ॉल्ट रूप से केवल वह निर्देशिका है जिसमें EXE होता है। यह केवल असेंबली नाम पर एक मैच की तलाश करता है और पहले मैच में खोजना बंद कर देगा।

यह तब [विधानसभा] संख्या की जांच करता है। यदि यह मेल नहीं खाता है तो आपको एक अपवाद मिलेगा, यह एक ही नाम के साथ एक और असेंबली की तलाश नहीं करेगा। जब भी आपको संकल्प की समस्या हो, तो आप Fuslogvw.exe उपयोगिता का उपयोग करना चाहेंगे। यह आपको बिल्कुल दिखाता है कि सीएलआर ने देखा और क्या गलत हुआ।

+0

क्या कमजोर संदर्भ संस्करण संख्या से परेशान हैं? मेरा अनुभव यह है कि यदि आप प्रोबिंग पथ में हैं (जीएसी के बारे में निश्चित नहीं है, लेकिन फिर यह कमजोर नहीं होगा) तो यह सिर्फ नाम से मेल खाता है। –

+1

चाहे वह मजबूत है या इससे कोई फर्क नहीं पड़ता। केवल जीएसी संस्करण संख्या द्वारा एक संदर्भित असेंबली को हल करने में सक्षम है। प्रोबिंग पथ खोज केवल नाम से ही की जाती हैं, असेंबली मिलने के बाद संस्करण संख्या अभी भी जांच की जाती है। –