2010-07-23 13 views
5

जब मैं अपने (2008 वी.एस. नेट) इकाई परीक्षण की रिहाई का निर्माण चलाने के लिए, मैं निम्नलिखित अपवाद में इकाई परीक्षण चल रहा है:समस्याएं दृश्य स्टूडियो

System.IO.FileLoadException: या फ़ाइल लोड नहीं कर सका विधानसभा 'arcVegaORM, संस्करण = 1.0.3856.24327, संस्कृति = तटस्थ, PublicKeyToken = 0dd85ae1d99ddbee' या अपनी निर्भरता में से एक। स्थित असेंबली की स्पष्ट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)।

जब मैं डीबग बिल्ड परीक्षण चलाता हूं तो मुझे अपवाद नहीं मिलता है।

इकाई परीक्षण ढांचा 'arcVegaORM' असेंबली के पुराने संस्करण को TestResults \ Out फ़ोल्डर में कॉपी कर रहा है। मुझे नहीं पता कि यह कहां से पुराना संस्करण प्राप्त करता है - यह प्रोजेक्ट बिन \ रिलीज़ फ़ोल्डर में संस्करण से मेल नहीं खाता है।

मुझे लगता है कि वीएस.NET इकाई परीक्षण ढांचे के साथ एक बग है, और यह पुराना संस्करण कैश किया गया है। जांच करने के लिए

उत्तर

2

एक बात GAC (वैश्विक विधानसभा कैश) होगा। आप विंडोज एक्सप्लोरर खोलकर और पता बार में c: \ windows \ assembly में टाइप करके ऐसा कर सकते हैं (मान लें कि आपका ओएस सी ड्राइव पर स्थापित है)।

यह बजाय GAC से विधानसभा के लिए हो रही हो सकता है।

अन्य चीजें करने के लिए समाधान को साफ करना होगा और यह सुनिश्चित करने के लिए सभी को पुनर्निर्माण करना होगा कि आपके पास कोई पुरानी असेंबली संदर्भ नहीं है।

इसके अलावा, यदि यह एक वेब एप्लिकेशन है, तो यह हमेशा आईआईएस को रोकने में मदद करता है और फिर C:\WINDOWS\Microsoft.NET\Framework\framework_version\Temporary ASP.NET Files फ़ोल्डर को साफ़ करता है।

टिप
दूसरी बात यह उपयोग करने के लिए .Net reflector है। आप देख सकते हैं कि असेंबली की निर्भरता क्या है, और आपको यह सुनिश्चित करने की ज़रूरत है कि वे सभी लक्ष्य मशीन पर मौजूद हैं।

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

Tip2
ध्यान दें कि कभी कभी आप मुद्दों जहां विधानसभा एक विधानसभा बी के संस्करण xxx के खिलाफ ही है मिलता है, और विधानसभा सी विधानसभा बी दूसरे शब्दों में के संस्करण yyy के खिलाफ ही है, अपनी परियोजना में 2 अलग विधानसभाओं हैं एक ही असेंबली के विभिन्न संस्करणों के खिलाफ बाध्य। यह डीएलएल नरक का आधुनिक दिन संस्करण है। इसके आस-पास हैक करने का तरीका असेंबली रीबंडिंग का उपयोग करना है। आप इसके बारे में here पढ़ सकते हैं। -

+0

विधानसभा GAC में नहीं है - मैं पहले ही जाँच। और समस्या अन्य मशीनों पर पुन: उत्पन्न करने योग्य है। – GarethOwen

+0

मेरी नवीनतम युक्ति देखें, मैं इस तकनीक का उपयोग इस प्रकार की समस्याओं को हल करने के लिए करता हूं। इसके अलावा, मैं एक सेकंड में tip2 जोड़ रहा हूँ, तो देखो पर :) :)।आपके विस्तृत उत्तर के लिए – dcp

+0

+1, लेकिन मुझे नहीं लगता कि यह समस्या है। असेंबली जो नहीं मिल सकती - arcVegaORM - मेरे समाधान में एक परियोजना है। क्वेशों में मैंने एक पूर्ण पुनर्निर्माण करने की कोशिश की - लेकिन संस्करण जो परीक्षण रन निर्देशिका में कॉपी किया गया है वह उतना ही संस्करण नहीं है जैसा कि arcVegaORM bin निर्देशिका में है। रिलीज परीक्षण चलाते समय केवल एक समस्या - डीबग बिल्ड परीक्षण चलाने से ठीक काम करता है! – GarethOwen

संबंधित मुद्दे