एकाधिक संस्करण असेंबली का संदर्भ कैसे लें

मैं एक शेयरपॉइंट एप्लिकेशन विकसित कर रहा हूं और .NET AjaxControlToolkit लाइब्रेरी का उपयोग कर रहा हूं, हम शेयरपॉइंट पर कस्टम एएसपीएक्स पेज जोड़ रहे हैं। शेयरपॉइंट 2007 क्विर्क मोड में चलाया गया है इसलिए मैंने AJAX लाइब्रेरी में कुछ संशोधन किया है ताकि इसे सामान्य रूप से व्यवहार किया जा सके। समस्या यह है कि दूसरी टीम पहले से ही AJAX लाइब्रेरी का उपयोग करती है और यह मेरे साथ एक अलग संस्करण है। यह कारण संघर्ष करता है क्योंकि उसी नाम के साथ बिन फ़ोल्डर में केवल एक डीएल हो सकता है।

जो मुझे पता है, उससे .NET इस स्थिति को आसानी से संभालने में सक्षम होना चाहिए। मैंने इसे हल करने के लिए मजबूत नाम और जीएसी का उपयोग करने का प्रयास किया है, लेकिन यह अभी भी बिन फ़ोल्डर में डीएलएल का संदर्भ देता है। यदि बिन फ़ोल्डर में कोई AjaxControlToolkit.dll नहीं है, तो एप्लिकेशन असेंबली लोड करने में असफल हो जाएगा।

अगर मैं इस तरह की पूरी असेंबली जानकारी का उपयोग करता हूं

<%@ 
    Register 
    tagprefix="AjaxControlToolkit"
    namespace="AjaxControlToolkit"
    assembly="AjaxControlToolkit, Version=1.0.299.18064, 
    PublicKeyToken=12345678abcdefgh, 
    Culture=neutral"
%>

यह मुझे कंपाइलर त्रुटि CS0433 देता है

क्या कोई मुझे एप्लिकेशन में असेंबली के एकाधिक संस्करण का उपयोग करने में मदद कर सकता है?

0
क्या आप एक ही नियंत्रण में विभिन्न असेंबली संस्करण का उपयोग करते हैं? या यह एक ही परियोजना है लेकिन विभिन्न नियंत्रण है?
जोड़ा लेखक Machinegon, स्रोत

1 उत्तर

वैसे कंपाइलर त्रुटि CS0433 के लिए लिंक यह स्पष्ट करता है कि मुख्य मुद्दा असेंबली के कई संस्करणों के साथ संदर्भित नहीं है - लेकिन नामस्थान + टाइपनाम विवादों के साथ।

जब आप किसी प्रकार को लोड / संदर्भित करते हैं - संकलक यह निर्धारित नहीं कर सकता कि कौन सी डीएलएल उस प्रकार को लोड करने के लिए है। यदि शेयरपॉइंट आपके डीएलएल संस्करणों को लोड करने जा रहा है (जैसा कि आप कहते हैं कि इसकी आवश्यकता है) - यह त्रुटि हमेशा आती है।

सरलतम फिक्स नए डीएलएल में नेमस्पेस को बदलना होगा, क्योंकि इसमें आपके कस्टम ट्वीक्स हैं, और आप कोड को नियंत्रित करते हैं - इसे स्पष्ट रूप से चिह्नित करें।

0
जोड़ा