/ नए पक्ष के साथ असेंबली के दूसरे संस्करण का उपयोग करें जब 3 पार्टी का काम पुराने संस्करण पर निर्भर करता है - .net, nhibernate, log4net

नई पार्टी के साथ असेंबली के दूसरे संस्करण का उपयोग करें जब तीसरे पक्ष का lib पुराने संस्करण - .net, nhibernate, log4net पर निर्भर करता है

मैं के साथ log4net के एक नए संस्करण का उपयोग करना चाहता हूंnhibernate। Log4net संस्करण को स्वयं svn स्रोत से संकलित किया गया है, इसलिए मुझे इसे एक नई कुंजी के साथ हस्ताक्षर करना पड़ा, जिसका अर्थ है कि publicKeyToken को बदल दिया गया है। मैंने संस्करण को 1.2.11.0 पर भी सेट किया है। समस्या यह है कि nhibernate log4net के पुराने 1.2.10.0 संस्करण का संदर्भ देता है।

मैंने इस भाग के साथ असेंबली बाइंडिंग पुनर्निर्देशन को app.config में कॉन्फ़िगर करने का प्रयास किया:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net"
publicKeyToken="1b44e1d426115821"/>
<bindingRedirect oldVersion="1.2.10.0"
newVersion="1.2.11.0"/>
</dependentAssembly>
</assemblyBinding>

हालांकि यह "कोई प्रभाव नहीं पड़ता है। मुझे लगता है कि यह है क्योंकि publicKeyToken doesn" टी मैच।

क्या ऐसा करने का कोई और तरीका है या मैं: ए। Log4net 1.2.10 का उपयोग करें और svn कोडबेस से जोड़ और फिक्स के साथ एक log4net एक्सटेंशन प्रोजेक्ट बनाएं जिसमें मुझे "दिलचस्पी" है? या ख। अपने स्वयं के log4net बिल्ड का उपयोग करके nhibernate के अपने संस्करण का निर्माण करें या सी। Log4net टीम को सही publicKeyToken के साथ log4net का नया संस्करण जारी करें

मैं सी पसंद करूंगा। और ईमानदारी से मैं यह नहीं समझ सकता कि वे क्यों नहीं बने "युगों में एक नया बिल्ड संस्करण जारी किया है, svn स्रोत में बहुत सारे सुधार और नई कार्यक्षमता हैं।

उत्तर:

जवाब के लिए 2 № 1

आप जो चाहते हैं, वह वही है जिसे हस्ताक्षर करने से रोकना है।

ध्यान दें कि आपके विकल्प c) को एक नए हाइबरनेट बिल्ड की भी आवश्यकता है।

मुझे लगता है कि बी) आपका सबसे अच्छा शॉट है।