2012-12-18 8 views
7

मुझे जीएसी में पंजीकृत एक डीएलएल मिला है जिसमें इसमें एक बग है (v4.2.0)।जीएसी डीएलएस अपडेट करना

इसलिए मैंने उस बग को ठीक किया है, केवल फ़ाइल संस्करण अपडेट किया है (v4.2.1) (असेंबली संस्करण को रखते हुए, v4.2.0) और एक नया एमएसआई पैकेज बनाया।

समस्या यह है कि डीएलएल जीएसी में स्थापित नहीं है। मैंने इसे C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL\v4.0_4.2.0.0__2269313d92725976 में डीएलएल पर राइट-क्लिक करके सत्यापित किया और फ़ाइल संस्करण की जांच की, जो अभी भी v4.2.0 है C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL के तहत कोई अन्य फ़ोल्डर नहीं बनाया गया है।

लेकिन! यदि मैं पहले संस्करण को अनइंस्टॉल करता हूं और फिर नया DLL इंस्टॉल करता हूं तो यह GAC में ठीक है।

क्या मैं इस गलत तरीके से आ रहा हूं? हमारे अनुप्रयोग विशिष्ट संस्करणों का उपयोग करने के लिए सेट हैं, इसलिए केवल असेंबली संस्करण v4.3.0 बनाना और इसे GAC wont work में इंस्टॉल करें।

अद्यतन

मैं (http://support.microsoft.com/kb/891030) प्रकाशक नीतियों के बारे में लेख मिल गया है और उस के बजाय प्रयास कर रहे हैं। मैंने पॉलिसी असेंबली जेनरेट की है। लेकिन विजुअल स्टूडियो क्रैश हो जाता है जब मैं इसे सेटअप प्रोजेक्ट में जोड़ने की कोशिश करता हूं = (

मैंने इसे प्राथमिक प्रोजेक्ट में सामग्री फ़ाइल के रूप में जोड़ने की कोशिश की है (और उसके बाद सामग्री फ़ाइलों को जीएसी में जोड़ना)। लेकिन फिर यह शिकायत करता है ।

पर विधानसभा पर हस्ताक्षर नहीं किया जा रहा तो मैं अभी भी अटक कर रहा हूँ।

उत्तर

4

अपडेट कर रहा है [AssemblyFileVersion] बग समाधान के लिए आम तौर पर सही दृष्टिकोण है, हालांकि यह iffy हो जाता है अगर आप GAC में एक विधानसभा के लिए ऐसा करते हैं। आप एक और ऐप तोड़ने का जोखिम चलाते हैं जो असेंबली का उपयोग करता है और अनजाने में काम करने के लिए बग्गी व्यवहार पर निर्भर करता है। एक सार्वजनिक विधि का नाम बदलने की तरह एक अनजान गलती निश्चित रूप से एक ऐप तोड़ने का एक अच्छा तरीका है, डीएलएल नरक की सड़क कई अच्छे इरादों से गुजरती है जो खराब हो जाती हैं।

हालांकि जीएसी केवल [असेंबलीवर्सन] पर ध्यान देता है और फ़ाइल संस्करण को अनदेखा करता है। मौजूदा एक को बदलने के लिए अद्यतन असेंबली प्राप्त करने के लिए आपको पहले पुराने को हटाना होगा। यह आकस्मिक प्रतिस्थापन को रोकने, जानबूझकर है।

<bindingRedirect> ऐप की .config फ़ाइल में जिसे आप मरम्मत करना चाहते हैं, एक प्रकाशक नीति से जाने के लिए बहुत आसान होगा।

+0

हाँ। पुराने संस्करण को अनइंस्टॉल करना और नए संस्करण को स्थापित करना। फ़ाइल संस्करण के लिए अभी भी संस्करण संस्करण धन्यवाद – jgauffin

0

मेरा मानना ​​है कि यह है कि क्या एक .NET विधानसभा GAC उसे एक अद्वितीय पहचानकर्ता देने के लिए उपयोग करता है के मापदंडों से कोई लेना देना नहीं है। अगर विधानसभा संस्करण उन विशिष्टता मानकों में से एक है, लेकिन फ़ाइल संस्करण नहीं है, जो आपके लक्षणों को समझा सकता है। विशेष रूप से यह जीएसी से संबंधित मजबूत नामित असेंबली

के लिए आवश्यक है

यह लिंक कहते हैं, बहुत

रूप

http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx

+0

एक ही असेंबली संस्करण का उपयोग करते हुए, लेकिन अलग-अलग फ़ाइल संस्करणों को माना गया है कि मौजूदा संस्करण में "अपडेट" जोड़ने का तरीका यहां बताया गया है: http://blogs.msdn.com/b/junfeng/archive/2004/02/14 /72666.aspx – jgauffin

+0

ठीक है, क्या यह आपके लिए काम करता है? मैंने सोचा कि आपका सिस्टम फ़ाइल संस्करण पर निर्भर है? – cowboydan