2009-05-05 11 views
7

यह मेरी समझ है कि .NET रनटाइम हमेशा जीएसी में संदर्भित असेंबली और फिर स्थानीय फ़ोल्डर्स में देखेगा। क्या Web.Config में कोई सेटिंग है जो इस ऑर्डर को उलटा करेगी?जीएसी के बजाय स्थानीय फ़ोल्डर्स में असेंबली देखने के लिए .NET कैसे प्राप्त करें?

उत्तर

17

नहीं। इसे हासिल करना संभव नहीं है। यदि आपके प्रोग्राम में संदर्भित एक के बराबर संस्करण का डीएलएल जीएसी में मौजूद है तो सीएलआर हमेशा इसे चुनें। इस व्यवहार को ओवरराइड करने का कोई तरीका नहीं है।

+0

क्या सुरक्षा के साथ कुछ करना है? – codeulike

+0

@codeulike, मेरा मानना ​​है कि इसे सर्विसिंग के साथ और अधिक करना है। मुझे ऐसा करने की क्षमता के बारे में और अधिक के बारे में कम पता है क्योंकि मैंने इसे समझने से पहले इस व्यवहार को बदलने की कोशिश करने में काफी समय बिताया था, यह संभव नहीं था। – JaredPar

+5

यही कारण है कि जीएसी मेरी किताब में बुरा है। – Benjol

2

मुझे यकीन नहीं है कि ऐसा कुछ है जो वास्तव में खोज आदेश को उलट देगा, लेकिन आपकी आवश्यकताओं के आधार पर आप assembly binding redirection देख सकते हैं जो आपको बहुत अधिक नियंत्रण देता है कि असेंबली के कौन से संस्करण लोड किए जाते हैं।

+1

यह आपके द्वारा बाध्य किए जाने वाले संस्करण को बदल देगा। हालांकि जो संस्करण आप चुनते हैं वह अभी भी मेरे द्वारा वर्णित जीएसी नियमों के अधीन होगा। – JaredPar

+0

दरअसल, इसे प्रतिबिंबित करने के लिए उत्तर को स्पष्ट किया गया –

3

अधिक जानकारी। this SO thread में आसपास के काम पर।

1

जेरेडपायर सही है - जीएसी हमेशा असेंबली के लिए पहले मतदान कराया जाएगा। हालांकि, अगर आप मेरे जैसे हैं, और डीएलएल जीएसी में रहते हैं और अभी भी डीबग करना चाहते हैं, तो आप अपनी .pdb फ़ाइल को जीएसी में असेंबली के समान फ़ोल्डर में डंप करने के लिए एक बिल्ड स्क्रिप्ट जोड़ सकते हैं (यह होगा सी: \ windows \ assembly \ gac_msil \ assembly.name_ [सार्वजनिक कुंजी टोकन])।

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