2010-02-17 7 views
9

मेरे पास जीएसी में "mycomp.myassembly.dll" है लेकिन लोड और लोड से फेंकने वाली फ़ाइल को अपवाद नहीं मिला है और LoadWithPartialName शून्य लौटाता है। मैं कर रहा हूँ निम्नलिखित:सी #: जीएसी से असेंबली कैसे लोड करें?

AssemblyName name = new AssemblyName(); 
    name.Name = "mycomp.myassembly.dll"; 

    Assembly assembly = Assembly.Load(name); 

mycomp.myassembly.dll फ़ाइल के लिए FileNotFound साथ विफल रहता है, और

Assembly assembly = Assembly.Load("mycomp.myassembly.dll"); 

बिल्कुल एक ही संदेश के साथ विफल रहता है।

मैंने डबल चेक किया कि असेंबली जीएसी में है (और यहां तक ​​कि gacutil/अगर इसके लिए भी है) और यह अन्य सभी मामलों में काम करता है, मैं बस इसे लोड करने में असमर्थ हूं।

मैं यहाँ क्या गलत कर रहा हूं? क्या मुझे कुछ याद आती है?

+1

क्या आपने ".dll" एक्सटेंशन के बिना असेंबली नाम की आपूर्ति करने का प्रयास किया है? असेंबली असेंबली = असेंबली। लोड ("mycomp.myassembly"); –

+0

दुर्भाग्य से या तो – Artem

उत्तर

19

क्या आपने पूरी तरह से योग्य असेंबली नाम का उपयोग करने का प्रयास किया है? (जैसे "ycomp.myassembly.dll, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")

+0

की मदद नहीं की, यह मदद की, धन्यवाद! :) – Artem

+0

डबल उद्धरण महत्वपूर्ण लोग हैं। –

1

मैं आमतौर पर संस्करण, संस्कृति और सार्वजनिक कुंजी के बिना लोड कर सकते हैं बस loading with the full name

// You must supply a valid fully qualified assembly name.    
     Assembly SampleAssembly = Assembly.Load 
      ("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 

प्रयास करें।

+0

मुझे लगता है कि सार्वजनिक कुंजी के बिना सार्वजनिक कुंजी की आवश्यकता होगी, इसे पूरी तरह से अलग असेंबली के रूप में माना जाता है। जीएसी में सभी असेंबली में सार्वजनिक कुंजी होगी। – erikkallen

+0

आप सही हैं। मैं मस्तिष्क farting और स्थानीय असेंबली लोड करने की सोच था –