2009-09-22 15 views
17

को पुन: संकलित किए बिना सी # प्रोजेक्ट में संदर्भ डीएल को अपग्रेड करें मुझे सी # एप्लिकेशन का एक निर्मित संस्करण लेने और संदर्भ डीएल में से एक को बदलने की आवश्यकता है। ऐसा करने का सबसे अच्छा तरीका क्या है, मेरे पास संदर्भ डीएलएल पर विशिष्ट संस्करण बंद है लेकिन जैसे ही मैं एक नए संस्करण के साथ डीएलएल को प्रतिस्थापित करने का परीक्षण करता हूं, मुझे लगता है कि "फ़ाइल या असेंबली XXXXX, संस्करण = XXXXX लोड नहीं हो सका। ? वहाँ dll के संस्करण के बारे में देखभाल से लोडर को रोकने के लिए तो dll सिर्फ लोड करने का प्रयास करेंगे एक तरह सेप्रोजेक्ट

उत्तर

18

हाँ, आप कर सकते हैं इस -। MSDN लेख Redirecting Assembly Versions देख

आप पूरी पढ़ना चाहिए दस्तावेज़, लेकिन यह अनिवार्य रूप से असेंबली के प्रकाशक को 'प्रकाशक नीति फ़ाइल' या उपभोक्ता को app.config फ़ाइल में जोड़ने के लिए शामिल करता है, इस तरह (इस आलेख से सीधे कॉपी किया गया):

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" 
          culture="en-us" /> 
     <bindingRedirect oldVersion="1.0.0.0" 
          newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

कुछ नोट:

  • आप स्पष्ट रूप से अपने संस्कृति निर्दिष्ट नहीं किया है (कई नहीं करते हैं), यह हो जाएगा "तटस्थ" के बजाय "en-us"।

  • आप पहले से ही यह पता नहीं है, तो आप प्राप्त कर सकते हैं विधानसभा की सार्वजनिक कुंजी टोकन मजबूत नाम सुविधा का उपयोग, की तरह इस: sn -t [AssemblyPath]

+0

कि एक recompile की आवश्यकता होगी, नहीं होगा यह? –

+0

या, क्या कॉन्फ़िगरेशन फ़ाइल केवल रनटाइम पर जांच की जाती है? –

+2

उन एक्सएमएल फाइलों को रनटाइम पर चेक किया जाता है। Http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian