2015-08-21 7 views
11

मेरे पास 3 सी # प्रोजेक्ट ए, बी, और सी दोनों ए और बी संदर्भ सी हैं। ए और बी से सी के संदर्भों को "स्थानीय कॉपी करें" पर सेट किया गया है जिसका अर्थ यह है कि सी के निर्माण के बाद C.dll (सी की आउटपुट निर्देशिका में), यह ए या बी (जो भी संकलित किया जा रहा है) की आउटपुट निर्देशिका में कॉपी किया गया हैविजुअल स्टूडियो 2015 डीबगिंग के दौरान डीएलएल लॉक करता है

मेरे पास 2 समाधान, एसए और एसबी हैं। एसए में ए और सी और एसबी में बी और सी शामिल हैं I विजुअल स्टूडियो 2015 के 2 उदाहरण लॉन्च करते हैं। मैं एक उदाहरण में एसए खोलता हूं और दूसरे में एसबी खोलता हूं।

मुझे लगता है कि अगर मैं एसए से डीबगिंग (एफ 5) ए शुरू करता हूं, और फिर (जबकि ए अभी भी डिबगिंग कर रहा है), एसबी से सी में बदलाव करें और एसबी को संकलित करने का प्रयास करें, मुझे एक संकलन त्रुटि मिलती है जिसमें सी .dll को अधिक लिखित नहीं किया जा सकता है क्योंकि यह किसी अन्य प्रक्रिया द्वारा उपयोग में है (devenv.exe का उदाहरण जो एसए चला रहा है)।

यह मुझे समझ में नहीं आता है क्योंकि सी से सीएलएल को संकलित करने और ए की आउटपुट निर्देशिका में कॉपी करने के बाद, विजुअल स्टूडियो को फ़ाइल पर लॉक जारी करना चाहिए।

मैं सत्यापित किया है (एसए में मॉड्यूल खिड़की के माध्यम से) कि लोड C.dll के संस्करण है जो ए

के उत्पादन निर्देशिका

यह कल होने वाली है जब मैं दृश्य का उपयोग शुरू किया शुरू करने के लिए कॉपी किया गया है है स्टूडियो 2015 (विजुअल स्टूडियो 2013 की बजाय)।

क्या किसी के पास कोई विचार है? मेरा वर्तमान समाधान सीटीआरएल-एफ 5 (डीबगिंग के बिना शुरू) के माध्यम से एसए चलाने के लिए है, लेकिन जब मैं एसए और एसबी को डीबग मोड में एक साथ चलाने के लिए चाहता हूं तो यह परेशान हो जाता है।

धन्यवाद।

अद्यतन

मैं में क्यों "संपादित करें और जारी रखें" सुविधा वर्णित व्यवहार का कारण बन सकता है, और https://msdn.microsoft.com/en-us/library/ms164926.aspx> संपादित करें यह पेज के अनुसार और जारी एक स्रोत कोड संशोधन करने के लिए अनुमति देता है कुछ शोध किया एक में, जबकि डिबगिंग सत्र और डिबगिंग सत्र को पुन: प्रारंभ करने, पुन: संकलित करने और पुनरारंभ करने के बिना परिणाम प्रभावी होते हैं (क्या एक गड़बड़ी की समस्या होनी चाहिए)। उस सुविधा को सक्षम करने के साथ, लॉक को समझाते हुए किसी भी समय पर निर्भर स्टूडियो को किसी भी निर्भर डीएलएल को पुन: संकलित करने की आवश्यकता हो सकती है।

+1

मेरी क्रिस्टल बॉल कहती है कि यह वास्तव में पीडीबी फ़ाइल है जो लॉक है। –

+0

दिलचस्प सुझाव, हालांकि एसबी से संकलन त्रुटि स्पष्ट रूप से बताती है कि यह डीएलएल है जो लॉक है, और विंडोज एक्सप्लोरर से डीएलएल को हटाने का प्रयास विफल रहता है। शायद पीडीबी भी बंद कर दिया गया है (हालांकि यह ए की आउटपुट निर्देशिका में भी कॉपी किया गया है)। किसी भी तरह से, मुझे लगता है कि यह वीएस2013 से वीएस2015 में बदलाव था जिसके परिणामस्वरूप मैं देख रहा था और मुझे उम्मीद है कि इसे ठीक करने का कोई तरीका है। त्रुटि: लिखने के लिए 'सी: \ BUILD \ C \ x86 \ obj \ Debug \ C.dll' नहीं खोल सकता - 'प्रक्रिया फ़ाइल तक नहीं पहुंच सकती' C: \ BUILD \ C \ x86 \ obj \ Debug \ C .dll 'क्योंकि यह किसी अन्य प्रक्रिया द्वारा उपयोग किया जा रहा है।' – Shea

उत्तर

19

मुझे एक ही समस्या थी। मैं अपने VS2015 सेटिंग बदल गई है और यह समस्या चला गया है लगता है:

  • विकलांग विकल्प \ डिबगिंग \ संपादित करें और none- को
  • -disabled विकल्प \ डिबगिंग \ TFS से
  • -Options \ Sourcecodemanagement जारी रखने के लिए डीबगिंग के दौरान डायग्नोस्टिकटोल-

सुनिश्चित नहीं है कि किसने लॉकिंग का कारण बना दिया है, लेकिन मुझे निदान की संदेह है कि मेरे पास VS2013 में नहीं था। (सेटिंग के नामों मैं अंग्रेज़ी जर्मन से अनुवाद, अगर यह वास्तव में कैसे वे संस्करण बनाम अंग्रेजी में कहा जाता है है पता नहीं है।)

संपादित करें: शीया ने शोध के रूप में यह संपादित करें-और-था डीएलएल को लॉक करने वाली सुविधा जारी रखें।

+0

धन्यवाद! "विकल्प \ डिबगिंग \ संपादित करें और जारी रखें" को अक्षम करना मेरे लिए समस्या ठीक कर दी गई है। – Shea

+0

मेरे लिए वीएस2015 में "संपादित करें और जारी रखें" नामक कोई सेटिंग नहीं है! – JerryGoyal

+1

@JerryGoyal जब आप त्वरित लॉन्च के माध्यम से इसकी खोज नहीं करते हैं (उन्हें निश्चित रूप से इसे ठीक करना चाहिए) लेकिन यदि आप डिबगिंग खोलते हैं तो आप इसे पा सकते हैं। –

0

मुझे एक ही समस्या थी और मेरे द्वारा काम किए गए इंटरवेब्स की खोज करते समय मुझे कोई अन्य अनुशंसित समाधान नहीं मिला।अंत में विजुअल स्टूडियो 2015 एंटरप्राइज़ की "मरम्मत" के बाद, मैंने विजुअल स्टूडियो को सुरक्षित मोड में लॉन्च करने का प्रयास किया: devenv.exe/SafeMode

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

2
मेरे मामले में

इस "पांडा मुक्त एंटीवायरस" कौन 'सी' परियोजना के dll पर देख रहा था था और इस त्रुटि के कारण:

"क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है प्रक्रिया फ़ाइल तक नहीं पहुँच सकता है"
+0

मुझे सी # वेब एप्लिकेशन डीबग करने और "पांडा मुक्त एंटीवायरस" को अक्षम करने के दौरान एक ही समस्या थी –

0

मेरे मामले में, .pdb फ़ाइल लॉक कर दी गई थी। यह .exe लॉक होने जैसा नहीं है क्योंकि यह डिबगिंग के दौरान होना चाहिए।

मान लीजिए कि यह केवल .pdb है, इसे बस एक नए फ़ोल्डर में ले जाएं (मैंने खींचा और गिरा दिया)। विचित्र रूप से पर्याप्त है, इसे हटाया नहीं जा सकता है, लेकिन यह निश्चित रूप से स्थानांतरित किया जा सकता है! एक बार .pdb फ़ाइल समाप्त हो जाने के बाद, असेंबली फिर से संकलित करने में सक्षम था।

वैकल्पिक समाधान (और शायद कम से कम सुविधाजनक) में पूरी तरह से परियोजना को बंद करना शामिल है, फिर इसे फिर से खोलना (.pdb फ़ाइल जादुई रूप से अनलॉक करता है!)।

संपादित करें: दूसरी बार होने के बाद, फ़ाइल को स्थानांतरित नहीं किया गया; यह प्रोजेक्ट को पुनरारंभ करना प्रतीत होता है यह जाने का एकमात्र विश्वसनीय तरीका है।

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