प्रसंगमेरा एप्लिकेशन हमेशा संदर्भित संस्करण के बजाय नवीनतम जीएसी संस्करण का उपयोग क्यों करता है?
मैं एक विधानसभा GAC, संस्करण 1.0 और 2.0 संस्करण में स्थापित की 2 अलग संस्करण है। मैंने एक ऐसा एप्लिकेशन बनाया जो 1.0 को एक विशिष्ट संस्करण के रूप में संदर्भित कर रहा है।
अंक
जब मैं अपने आवेदन चलाने के लिए, यह हमेशा संस्करण 2.0 लोड जबकि आवेदन विशेष रूप से संस्करण 1.0 का संदर्भ होगा।
प्रश्न
क्यों हो रहा है? मैं अपने एप्लिकेशन को उस संस्करण को लोड करने के लिए कैसे मजबूर कर सकता हूं जिसके लिए इसे संकलित किया गया है?
ऐसा प्रतीत नहीं होता है कि बाध्यकारी रीडायरेक्ट के साथ इसका कोई संबंध नहीं है क्योंकि मेरा एप्लिकेशन संस्करण 2.0 के बारे में भी जागरूक नहीं था जब मैंने इसे बनाया और संदर्भ "विशिष्ट संस्करण" मेटाडाटा सत्य पर सेट किया गया है।
धन्यवाद।
संपादित करें:
विधानसभा मैं संदर्भित कर रहा हूँ वास्तव में ODAC पैकेज से Oracle.DataAccess है। मैंने देखा कि अन्य असेंबलीयां पॉलिसी.एक्स.xxx.Oracle.DataAccess नामक हैं जहां जीएसी में प्रकाशित किया गया है।
संपादित करें 2:
Oracle.DataAccess नीति में देखने के बाद मैं विन्यास बाध्यकारी रीडायरेक्ट को परिभाषित मिला:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="4.112.0.0-4.112.3.0" newVersion="4.112.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
हालांकि मैं उलट जोड़ा में अनुप्रेषित बाध्यकारी मेरी आवेदन विन्यास, जीएसी में नीति प्राथमिकता प्रतीत होती है। मैंने पाया एक MSDN article विषय के इलाज और इस विन्यास के साथ नीति की अनदेखी करने का सुझाव दे:
<publisherPolicy apply="no" />
लेकिन यह अभी भी काम नहीं करता है ...
संपादित करें 3:
मैं जीएसी से पॉलिसी को हटाने की कोशिश की और मेरी मशीन रीबूट की। अंततः यह काम किया। यह एक confortable समाधान विकास की तरह महसूस नहीं करता है, लेकिन इस नीति ने मेरे आवेदन में से एक तोड़ दिया है जिसका मतलब है कि पॉलिसी को अक्षम करना मेरे मामले में करना सही है।
अंतिम संपादित करें:
इगोर मुझे सही जवाब दिया।सभी मैं उन नीतियों वैकल्पिक हल के लिए करना था सही configruation खंड में publisherPolicy
सेटिंग का उपयोग करने के लिए था:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<publisherPolicy apply="no"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
आप की जाँच क्या आपके संदर्भित विधानसभा के लिए कोई प्रकाशक नीति नहीं थी ? –
@IgorKorkhov: हाँ मुझे GAC में Policy.x.xxx.MyAssembly नाम नामक कुछ मिली। मुझे इस तरह के तंत्र से अवगत नहीं था। मैं अपना प्रश्न संपादित करता हूं और आप एक उत्तर सबमिट कर सकते हैं। धन्यवाद। – Ucodia
टेंगेंशियल प्रश्न: समस्या क्या है जिससे आप V1 का उपयोग करना चाहते हैं? मैं कभी-कभी ओरेकल का उपयोग करता हूं, इसलिए पूर्ववर्ती अग्रसर है :) – Ian