2009-07-21 4 views
6

पर जाने नहीं देता है। मैं 8 .NET परियोजनाओं के समाधान पर काम कर रहा हूं। चूंकि मैं टीडीडी का अभ्यास कर रहा हूं, मुझे अक्सर अपने समाधान को फिर से संकलित करना होगा।विजुअल स्टूडियो 2008 बिन फ़ोल्डर में डीएलएल लॉक करता है और इसे

त्रुटि 2 "बिन \ डीबग \ Zeiterfassung करने के लिए फ़ाइल " obj \ डीबग \ Zeiterfassung.Tests.dll "कॉपी करने में असमर्थ: हाल ही में मैंने जब संकलित करने के लिए कोशिश कर रहा है कि हर दूसरी बार के बारे में निम्न त्रुटि हो रही किया गया है। Tests.dll "। प्रक्रिया 'bin \ Debug \ Zeiterfassung.Tests.dll' फ़ाइल तक नहीं पहुंच सकती है क्योंकि इसका उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है।

Zeiterfassung.Tests.dll मेरी परियोजनाओं में से एक द्वारा उत्पन्न डीएल है (यह यूनिट परीक्षण प्रोजेक्ट है)। यह हमेशा यह डीएलएल है जिसे कॉपी नहीं किया जा सकता है और त्रुटि का कारण बनता है। बाकी सब कुछ ठीक समय के 100% काम करता है।

लगभग 9/10 बार मैं अपने समाधान को फिर से संकलित करके समस्या को "हल" कर सकता हूं। लेकिन जब समस्या वास्तव में खराब हो रही है, तो परियोजना सफलतापूर्वक संकलित नहीं होगी चाहे कितनी बार मैं कोशिश करता हूं और मुझे आईडीई को पुनरारंभ करना होगा।

मैंने माइक्रोसॉफ्ट के हैंडल.एक्सई का उपयोग यह पता लगाने के लिए किया कि कौन सी प्रक्रिया डीएलएल को लॉक कर रही है और यह devenv.exe है। मैंने डीएलएल को हाथ से हटाने की भी कोशिश की और इसे तब तक हटाया नहीं जा सकता जब तक कि मैं आईडीई को पुनरारंभ नहीं करता।

अंतिम लेकिन कम से कम नहीं, मैंने अपने प्रोजेक्ट में <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies> को अन्य फ़ोरम में सुझाए गए अनुसार जोड़ने की कोशिश की, लेकिन इससे मदद नहीं मिली।

कृपया मदद करें! यह समस्या वास्तव में मुझे पागल ड्राइव शुरू कर रहा है।

संपादित करें: मैं यह भी जोड़ सकता हूं कि मैंने यह सुनिश्चित किया है कि यह समस्या तब होती है जब मेरी समस्या परीक्षण समाप्त हो जाता है। फिर भी, डीएलएल बंद रहता है। मैं Resharper इकाई परीक्षण एक्सप्लोरर के माध्यम से अपने परीक्षण चला रहा हूँ।

उत्तर

0

लग रहा है बग की तरह गायब हो गया (उंगलियों को पार कर ...) मैंने अपनी टेस्ट प्रोजेक्ट को स्थानांतरित करने के बाद, प्रोजेक्ट के पहले संस्करण को रिपोजिटरी से चेक आउट किया और सभी संस्करण फ़ाइलों को नए संस्करणों से बदल दिया।

+0

यदि यह काम करता है, तो यह मुझे चिंतित करता है। इसका मतलब है कि आपके पास कहीं भी आपके कोड में कोई समस्या है जिसे आपने गलती से जोड़ा है और अब हटा दिया है। यह बाद में अस्थिरता का कारण बन सकता है। – Randolpho

+0

ऐसा लगता है जैसे मैंने एक मुद्दा पेश किया था जो पिछले कुछ दिनों में कभी-कभी इस समस्या का कारण बन गया था और अब मैंने पिछले कोड संस्करण पर वापस जाकर अपने कोड के साथ इस मुद्दे को हटा दिया। –

+1

हो सकता है कि आपको बस रीबूट करने की आवश्यकता हो, आप विंडोज लॉल का उपयोग कर रहे हैं। –

3

मुझे पहले भी यही समस्या का सामना करना पड़ा है। Process Explorer हैंडल को हटाने में सक्षम है।

+1

आप सही हैं! लेकिन मैं इसे कैसे स्वचालित कर सकता हूं? समस्या इतनी बार होती है कि ProcessExplorer में हैंडल बंद करना बहुत अधिक ओवरहेड है। –

+0

दो चीजें। प्रक्रिया एक्सप्लोरर ने संकेत दिया होगा कि फाइल किस फाइल को खोलती है। क्या यह एक ढीले थ्रेड के साथ प्रक्रिया का डीबग-रन था? विजुअल स्टूडियो खुद? दूसरा, एकमात्र बार जब मेरी टीम को "डीएलएल लॉकिंग" चीज में कोई समस्या है, तब हमें परियोजना में एक परिपत्र संदर्भ मिला है। प्रोजेक्ट ए के लिए बी को सी की आवश्यकता होती है जिसके लिए ए की आवश्यकता होती है। विजुअल स्टूडियो स्वयं आमतौर पर डीएलएल लॉक वाला होता है। –

+0

विजुअल स्टूडियो के पास डीएलएल लॉक है। लेकिन मुझे कोई परिपत्र संदर्भ नहीं मिला। –

1

सबसे संभावित समस्या एक थ्रेडिंग समस्या है। आपके पास शायद एक यात्रा करने वाला थ्रेड था जो अभी भी निष्पादित है, और इसका डीएलएल का संदर्भ है।

+0

संकेत के लिए धन्यवाद, लेकिन मैं समस्या को कैसे ठीक कर सकता हूं? –

+1

एड्रियन, क्या आपकी परियोजना किसी प्रकार की मल्टीथ्रेडिंग क्षमताओं का उपयोग करती है? समस्या शायद आपके आवेदन के कोड में कहीं है। –

+0

@ एड्रियन: स्पेंसर सुझाव देता है, यदि आप धागे का उपयोग कर रहे हैं तो फिक्स आपके कोड में होगा। इस बिंदु पर एक फिक्स का सुझाव देने के लिए कई संभावनाएं हैं। – Randolpho

0

विजुअल स्टूडियो के पास 1 दिन से इस तरह की एक या दूसरी समस्या थी। आपको हमेशा आसान समाधानों का एक सेट देना अच्छा लगेगा, लेकिन स्पष्ट रूप से, कभी-कभी, यह सिर्फ "अपने पैरों पर फिसल गया" है।

उस स्थिति में, सरल समाधान बाहर निकलना और पुनरारंभ करना है। यहां तक ​​कि समाधान और फिर से खोलने से भी मदद नहीं मिल सकती है।

+2

हां, यह वही है जो मैं अब तक कर रहा हूं। लेकिन आईडीई को पुनरारंभ करना हर 10 मिनट में मेरी उत्पादकता को गंभीरता से प्रभावित करता है। –

0

द्वारा "मैं के रूप में एक और मंच में सुझाव दिया अपने प्रोजेक्ट को सच जोड़ने की कोशिश की" क्या आपका मतलब है कि आप एक संपत्ति GenerateResourceNeverLockTypeAssemblies नामित के रूप में http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/6f76db9a-ea37-42b3-a016-571912c28032 पर सुझाव बनाया है और सच के लिए सेट? अगर कोशिश न करें।

सैयद इब्राहिम हाशिमी

मेरे पुस्तक: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

+0

ओह, GenerateResourceNeverLockTypeAssemblies टैग को कोड के रूप में चिह्नित करने के लिए भूल गए हैं और इसलिए यह मेरे पोस्टिंग में नहीं दिखाया गया था। हां, यही वह है जो मैंने पहले ही कोशिश की है। –

1

यह मेरे लिए काम किया: 1) परियोजना के बाहर नया फ़ोल्डर बनाएं (सी: \ डीबग); 2) अपनी परियोजना पर राइट क्लिक करें और गुण चुनें; 3) बिल्ड टैब का पता लगाएं; 4) बिल्ड टैब में आउटपुट सेक्शन पर जाएं (VS2010 में अंतिम बार); 5) ब्राउज़ बटन पर क्लिक करें और आउटपुट निर्देशिका के रूप में अपना नया सी: \ डीबग स्थान चुनें; 6) सभी परिवर्तनों को सहेजें; 7) बिल्ड (एफ 6);

0

मेरे पास similar problem था। मैं एक अच्छा समाधान के बारे में पता नहीं है, लेकिन एक हैक है कि समस्या का हल एक पूर्व निर्माण घटना है कि vstest.executionengine.exe मारता है जोड़ने के लिए है:

taskkill /F /IM vstest.executionengine.exe /FI "MEMUSAGE gt 1" 
taskkill /F /IM vstest.executionengine.x86.exe /FI "MEMUSAGE gt 1" 
संबंधित मुद्दे