2013-10-29 7 views
11

मैंने अपने .dll प्रोजेक्ट के लिए आउटपुट फ़ोल्डर सेट किया है, हालांकि परियोजना गुण, जिसे मैं "आउटपुट" कहता हूं।vshost.exe मेरा .dll accesing रहता है और जब मैं इसे बनाता हूं तो मैं इसे अपडेट नहीं कर सकता

समस्या एक खाली आउटपुट फ़ोल्डर से है, पहली बार जब मैं प्रोजेक्ट का निर्माण करता हूं, तो यह ठीक है। दूसरी बार, मैं निम्नलिखित त्रुटि मिलती है:

Error 328 Unable to copy file "obj\Release\MyLibrary.dll" to "......\Output\Release\MyLibrary.dll". The process cannot access the file '......\Output\Release\MyLibrary.dll' because it is being used by another process.

"किसी अन्य प्रक्रिया" दृश्य स्टूडियो से vshost.exe है। चूंकि यह MyLibrary.dll का आकलन करता रहता है, इसे हटाया या बदला नहीं जा सकता है, इस प्रकार त्रुटि क्यों। यह आउटपुट फ़ोल्डर पर MyLibrary.dll को अद्यतन नहीं करता है। हालांकि मेरे पास मेरे समाधान में अन्य। डीएल परियोजनाएं हैं जिनमें यह नहीं होता है।

समाधान जिसे मैंने अभी तक अद्यतन करने के लिए उपयोग किया है, वीएस को बंद करना है (इस प्रकार vshost.exe को बंद करना), फिर एक .bat फ़ाइल चलाएं जो फ़ाइल आउटपुट \ रिलीज़ \ MyLibrary.dll को हटा देता है, फिर VS को फिर से खोलें और इसकी परियोजना को पुनर्निर्माण करें।

मुझे पता है कि वास्तव में vshost.exe क्या करता है, इसलिए मुझे पता नहीं है कि रूट से इस समस्या को कहां से शुरू करना है। मुझे नहीं पता कि यह एक विशिष्ट। डीएल के साथ क्यों होता है। मैं किसी भी विचार की सराहना करता हूं जो मुझे जांचने में मदद करता है कि ऐसा क्यों होता है।

+0

यह विजुअल स्टूडियो 2005 के बाद से हुआ है। किसी भी विशेष कारण के लिए हर बार और फिर से। मुझे मिला एकमात्र तरीका यह है कि आप वही करें। – SimonGoldstone

+0

डीबगर अलग होने के बाद कुछ भी जारी रह सकता है। यानी थ्रेड, या कुछ पर कुछ चल रहे कोड। –

+0

मुझे यह समस्या मिली जब मेरे पास एक दृश्य स्टूडियो सत्र में संकलित लाइब्रेरी थी, और एक अन्य दृश्य स्टूडियो सत्र डिबगिंग में एप्लिकेशन। लाइब्रेरी कोड में बग ढूंढने और पुन: निर्माण करने के बाद, यह पुनर्निर्माण के बाद लाइब्रेरी की एप्लिकेशन कॉपी को रीफ्रेश करने में विफल रहा। –

उत्तर

14

vshost.exe विजुअल स्टूडियो होस्टिंग प्रक्रिया है। यह एक कस्टम सीएलआर होस्ट है जो आपके EXE को लोड करता है और डिबगिंग को आसान बनाता है। आप इसे बंद कर सकते हैं, जिसके बहुत कम दुष्प्रभाव हैं। प्रोजेक्ट + प्रॉपर्टीज, डिबगिंग टैब, "विजुअल स्टूडियो होस्टिंग प्रक्रिया सक्षम करें" विकल्प को अनचेक करें।

अब आपको अपने कार्यक्रम में वास्तविक समस्या खोजने की अधिक संभावना है। जब आप इसे पूछते हैं तो आपका प्रोग्राम छोड़ने से सबसे आम समस्या के साथ। आप अभी भी बिल्ड निर्माण प्राप्त करेंगे, अब आप अपने स्वयं के EXE को डीएलएल पर लॉक रखने वाले के रूप में उँगलियों को देखेंगे। आप इसे टास्क मैनेजर प्रोसेस टैब में भी देखेंगे। जो आपको इसे मारने की अनुमति देता है।

यह स्पष्ट नहीं है कि प्रोग्रामर इस समस्या को कैसे पुन: उत्पन्न करते हैं। F5 के बजाय Ctrl + F5 दबाकर निश्चित रूप से ऐसा होगा, जब आप प्रोग्राम प्रारंभ करते हैं तो तुरंत डीबगर को संलग्न करने के लिए F5 दबाएं। डीबगर + स्टॉप डिबगिंग का उपयोग अब विश्वसनीय प्रोग्राम को रोक देगा। अन्यथा यह पता लगाने के लिए कि आपका प्रोग्राम क्या कर रहा है, फिर से डिबगर को फिर से संलग्न करने के लिए प्रक्रियाओं को टूल + अटैच का उपयोग कर सकते हैं।

एंटी-मैलवेयर उल्लेख करने के लिए एक आम चिल्लाहट है, उन्हें रास्ता बहुत उत्साहित होता है जब वे निष्पादन योग्य फ़ाइल कहीं से नहीं दिखाई देते हैं। यदि आप अवास्ट का उपयोग करते हैं तो इसे पूरी तरह से अनइंस्टॉल करें, यह वीएस के साथ काफी असंगत है।

+3

यह निष्पादन योग्य प्रोजेक्ट में "विजुअल स्टूडियो होस्टिंग प्रक्रिया सक्षम करें" को अनमार्क करके समस्या हल करता है जो डीएलएल का उपयोग करता है। विस्तृत उत्तर के लिए धन्यवाद। –

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

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