मैं पिछले कुछ हफ्तों में इसे क्रैक करने की कोशिश कर रहा हूं और अभी तक कोई अच्छा समाधान नहीं मिला है; उम्मीद है कि मैं यहां एक जवाब प्राप्त कर सकता हूं।रनटाइम पर असेंबली के 2 संस्करण लोड हो रहा है
मेरे पास दो असेंबली (ZA & जेडबी) हैं, जिनमें से दोनों एक आम परियोजना/डीएलएल (जेडसी) को इंगित करते हैं, लेकिन जो एक अलग संस्करण (यानी एक ही डीएलएल नाम, समान नामस्थान, कुछ कक्षाएं अलग हो सकती हैं) पर हो सकती हैं। । प्रत्येक असेंबली स्वयं ही काम करती है, हालांकि, अगर किसी को रनटाइम पर लोड किया जाता है (उदा। ए लोड बी), तो मैं इसे काम नहीं कर सकता। कुछ मदद की जरूरत है।
यहाँ सेटअप है:
- ZA ZC पर निर्भर करता है (सामान्य) संस्करण 1.1
- ZB ZC संस्करण पर निर्भर 1,0
ZA ZB में कुछ लोड करने के लिए की जरूरत है लोड करने के लिए की जरूरत है (जो रनटाइम पर, जेडसी पर निर्भर करता है)।
जेडए मास्टर ऐप है। इसकी bin
निर्देशिका के तहत, एक प्लगइन्स निर्देशिका plugins/plugin-ZB
है जिसके अंतर्गत मैं सभी जेडबी और इसकी निर्भरता (जेडसी) रखना चाहता हूं। ठीक काम -
Assembly.Load()
dll का एक ही संस्करण का उपयोग कर:
यहाँ मैं अब तक की कोशिश की है है।
Assembly.Load()
डीएल के विभिन्न संस्करणों का उपयोग करके - जेडबी लोड, लेकिन जब विधि चलती है, तो मुझे एक विधि अपवाद नहीं मिला है।
AppDomain.Load()
को फ़ाइल मिली नहीं मिली; मैंने असेंबली को हल करने के लिए प्रतिनिधि का भी इस्तेमाल किया।
जेडसी: के बारे में कुछ विवरण - कुछ विधियां सार्वजनिक स्थिर हैं (कुछ नहीं हैं)। जैसे Log.Log("hello");
- कुछ मूल्य (प्राइमेटिव्स या ऑब्जेक्ट्स) वापस कर सकते हैं। - कुछ विधियां गैर स्थैतिक (और मूल्य मान) हैं।
सहायता? - टीआईए
"आप केवल एक AppDomain के लिए एक विधानसभा का एक संस्करण हो सकता है" सच नहीं है। एक असेंबली से असेंबली के दो संस्करणों को संदर्भित करना भी संभव है, अधिक जानकारी के लिए बाहरी उपनाम देखें, यह पहली बात है जो फीचर के उदाहरण के साथ Google पर पॉप अप करती है: http://blogs.msdn.com/ बी/ansonh/संग्रह/2006/09/28/extern-alias-walkthrough.aspx – Graham
दो ऐपडोमेन का उपयोग करना समस्या का समाधान है हालांकि। – Graham
आप सही, अद्यतन का जवाब दिया! –