2010-09-20 13 views
6

की GAC प्रतिलिपि मैं एक NUnit करने के लिए, ठीक है, इकाई परीक्षण एक विधानसभा का उपयोग कर रहा ध्यान न दें।NUnit - एक DLL

विधानसभा अपने प्रोजेक्ट उत्पादन dir (\ बिन \ डिबग) में है और इस स्थान से NUnit में लोड किया जाता (विधानसभाओं> विधानसभा जोड़े)।

हालांकि एक पुराने संस्करण GAC में भी है और NUnit इस एक उठा बजाय।

मैं निश्चित रूप से पुराने संस्करण को हटा सकता हूं और निर्माण पर जीएसी को पुनः स्थापित कर सकता हूं लेकिन इसमें कुछ समय लगता है - बिन से संस्करण लेने के लिए nnnit (या अधिक .NET फ्रेमवर्क) को मजबूर करने के लिए कोई भी तरीका \ डीबग डीआईआर?

संपादित

AssemblyVersion (और इसलिए मजबूत नाम) के दोनों संस्करणों तय कर रहे हैं - अपने ही फ़ाइल संस्करण बदलता है कि प्रति KB 556041 - How to use Assembly Version and Assembly File Version

+0

यह केवल तभी होना चाहिए जब आपके बिन \ डीबग-कॉपी (और आपके प्रोजेक्ट संदर्भ) में जीएसी में एक जैसा ही समान संस्करण संख्या हो। – sisve

+0

असेंबली वर्जन नंबर समान हैं, मैंने जानकारी के इस महत्वपूर्ण बिट को समझाते हुए अतिरिक्त टिप्पणियां जोड़ दी हैं, मुझे बुरा! – Ryan

उत्तर

1

के रूप में आप करने के लिए अपने .config फ़ाइल में एक <bindingRedirect> बनाने के लिए कोशिश कर सकते अपने स्थानीय असेंबली पर रीडायरेक्ट करें और जीएसी में स्थापित एक का उपयोग न करें।

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

के एक नए संस्करण के खिलाफ चलाने के लिए आवेदन कॉन्फ़िगर कर सकते हैं ...

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

यह भी आप के लिए दिलचस्प हो सकता है:

आशा है कि मदद करता है!

+2

+1 इसके अच्छे संदर्भ के रूप में (मुझे बाध्यकारी रीडायरेक्ट के बारे में पता था) लेकिन यह मेरी मदद नहीं करता है क्योंकि जीएसी के संस्करण में एक ही असेंबली वर्जन – Ryan

+0

है, अगर असेंबली संस्करण समान है और आप नहीं बदल सकते यह आपके पास बहुत अधिक मौका नहीं है क्योंकि .NET इसे पहले जीएसी से ढूंढता है। यह एक nnnit व्यवहार नहीं है, यह एक मानक .NET एक है। –

0

मुझे इस स्थिति में क्या करना है, जब तक इकाई परीक्षण नहीं करता तब तक असेंबली पर हस्ताक्षर नहीं करना है जब तक कि मैं इसे तैनात करने के लिए तैयार न हो। यह एक चरण प्रक्रिया है जहां आप प्रोजेक्ट गुणों पर जाते हैं और असेंबली सेटिंग साइन इन करते हैं। जब आप पुन: संकलित करते हैं, अगली बार जब आप परीक्षण चलाते हैं, तो एनयूनीट इसे स्थानीय बिन फ़ोल्डर से उठाएगा, क्योंकि हस्ताक्षरित असेंबली जीएसी को तैनात नहीं किया जा सकता है। मुझे जो मिला वह यह है कि यदि आपके पास पहले से ही जीएसी में असेंबली का संस्करण है, तो भी अगर आप परियोजना द्वारा परीक्षण के तहत असेंबली का संदर्भ देते हैं तो यह अभी भी हस्ताक्षरित संस्करण ले जाएगा। जब आप परीक्षण के साथ होते हैं, तो आप सेटिंग को वापस चालू और तैनात करते हैं।

आदर्श नहीं है क्योंकि अब आपके पास उस अतिरिक्त कदम से गुज़रना है, लेकिन जितना करीब मैं काम कर सकता हूं उतना करीब नहीं।