बाध्यकारी पुनर्निर्देशन की आवश्यकता क्यों है? मान लीजिए कि आपके पास A, लायब्रेरी B का संदर्भ देता है, और संस्करण 1.1.2.5 का लाइब्रेरी C भी है। लाइब्रेरी बी बदले में लाइब्रेरी सी का भी संदर्भ देता है, लेकिन संस्करण 1.1.1.0 का। अब हमारे पास एक संघर्ष है, क्योंकि आप एक ही असेंबली के विभिन्न संस्करणों को रनटाइम पर लोड नहीं कर सकते। इस विरोध को हल करने के लिए, आप आमतौर पर नए संस्करण में बाइंडिंग पुनर्निर्देशन का उपयोग कर सकते हैं (लेकिन पुराने के लिए भी हो सकता है)। आप आवेदन ए के निम्नलिखित फ़ाइल को जोड़कर ऐसा करते हैं, configuration > runtime > assemblyBinding
अनुभाग के तहत ( पूर्ण विन्यास फ़ाइल के उदाहरण के लिए यहां देखें ):
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
आप नक्शे में कई प्रकार के संस्करण भी निर्दिष्ट कर सकते हैं:
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
अब लाइब्रेरी बी, जिसे संस्करण 1.1.1.0 के C के संदर्भ में संकलित किया गया था, रनटाइम पर C संस्करण 1.1.2.5 का उपयोग करेगा। बेशक, आप बेहतर सुनिश्चित करते हैं कि लाइब्रेरी सी बैकवर्ड संगत है या इससे अप्रत्याशित परिणाम हो सकते हैं।
आप पुस्तकालयों के किसी भी संस्करण को पुनर्निर्देशित कर सकते हैं, न कि केवल प्रमुख।
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"