2012-04-10 13 views
14

हमारे पास कस्टम DLL है जो हमारी प्रारंभिक सेटअप फ़ाइल में शामिल नहीं हैं। वे रनटाइम पर लोड होते हैं। .NET 2.0 का उपयोग करते समय यह प्रक्रिया ठीक काम करती है, लेकिन हमें "चालित सदस्य एक गतिशील असेंबली में समर्थित नहीं है" त्रुटि संदेश अब हम .NET 4.0 का उपयोग कर रहे हैं।प्लग-इन DLL फ़ाइलों को लोड करना, "आमंत्रित सदस्य गतिशील असेंबली में समर्थित नहीं है।"

try 
{ 
    assem = Assembly.LoadFrom(fi.FullName); //fi is FileSystemInfo 
} 
catch (FileLoadException) {} 
catch (BadImageFormatException) {} 
catch (System.Security.SecurityException) {} 
catch (ArgumentException) {} 
catch (PathTooLongException) {} 
+2

स्टैकट्रेस करें। – leppie

उत्तर

2

यह app.config फ़ाइल में दूरस्थ स्रोतों से "प्लग-इन" डीएल के लिए अनुमति देता है।

<configuration> 
    <runtime> 
     <loadFromRemoteSources enabled="true"/> 
    </runtime> 
</configuration> 

http://msdn.microsoft.com/en-us/library/dd409252.aspx

8

मेरे लिए इस मुद्दे को एक Aspose dll के लिए लाइसेंस को एम्बेड नहीं किया गया था: http://www.aspose.com/community/forums/thread/423874/initializing-the-license-file.aspx

उनकी कोड, गतिशील विधानसभाओं जब एक लाइसेंस नहीं पाई गई है injects उनके DLLs को विफल कर रही, साथ ही अन्य कोड का एक गुच्छा जो गतिशील असेंबली के साथ संगत नहीं है।

यह सुनिश्चित नहीं है कि यह तृतीय पक्ष डीएलएस के साथ पंजीकृत उपयोग सुनिश्चित करने के लिए एक सामान्य लाइसेंसिंग/सक्रियण विधि है, इसलिए मैं इसे यहां Google के लिए पोस्ट कर दूंगा।

5

यह त्रुटि तब हो रही है क्योंकि Assembly.Load गतिशील असेंबली पर नहीं बुलाया जा सकता है। उन्हें उपयोग करने से पहले गतिशील असेंबली को फ़िल्टर करना होगा।

var assemblies AppDomain.CurrentDomain.GetAssemblies().Where(p => !p.IsDynamic);