स्रोत फ़ाइल तब अलग होती है जब मॉड्यूल बनाया गया था


103

यह मुझे पागल बना रहा है।

मेरे पास एक बड़ी परियोजना है जिसे मैं संशोधित करने की कोशिश कर रहा हूं। मैंने पहले देखा था कि जब मैंने टाइप DbCommandकिया था, तो दृश्य स्टूडियो ने उस पर प्रकाश डाला गया कोई सिंटैक्स नहीं किया था, और मैं उपयोग कर रहा हूं System.Data.Common

भले ही कुछ भी उजागर नहीं किया गया था, लेकिन परियोजना मेरे ब्राउज़र में ठीक चल रही थी। इसलिए मैंने डिबगर चलाने का फैसला किया कि क्या चीजें वास्तव में काम कर रही हैं जैसा कि उन्हें होना चाहिए।

हर बार हाइलाइटिंग नहीं करने वाले वर्ग को कहा जाता है मुझे "the source file is different from when the module was built"संदेश मिलता है ।

मैंने समाधान को साफ किया और इसे कई बार फिर से बनाया, tmp फ़ाइलों को हटा दिया, यहाँ सभी दिशाओं का पालन किया "स्रोत फ़ाइल तब अलग थी जब मॉड्यूल बनाया गया था।" वेब सर्वर को पुनः आरंभ किया और फिर भी यह बताता है कि स्रोत फाइलें भिन्न हैं जब वे स्पष्ट रूप से नहीं हैं।

मैं इस वजह से आज जो भी कोड लिख चुका हूं, उसका कोई भी परीक्षण नहीं कर सकता।

  • जब मैं सिर्फ इसका अनुपालन करता हूं तो स्रोत बाइनरी से अलग कैसे हो सकता है?
  • वहाँ दृश्य स्टूडियो में कुछ समझ दस्तक करने के लिए कोई रास्ता है, या मैं बस कुछ याद कर रहा हूँ?

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

जवाबों:


111

मुझे यह मुद्दा एक कंसोल ऐप चलाने में मिला जहां स्रोत अलग था वह स्रोत था जिसमें प्रवेश-बिंदु (स्टेटिक शून्य मेन) था। बिन और obj निर्देशिकाओं को हटाने और एक पूर्ण पुनर्निर्माण करने के लिए यह सही लग रहा था, लेकिन हर बार जब मैंने एक कोड परिवर्तन किया, तो यह फिर से पुराना हो जाएगा।

मुझे इसके लिए कारण मिला:

  1. मैंने "रन पर केवल स्टार्टअप प्रोजेक्ट और निर्भरता बनाएँ" (टूल -> विकल्प -> प्रोजेक्ट्स और सॉल्यूशंस -> बिल्ड एंड रन) की जाँच की थी
  2. कॉन्फ़िगरेशन मैनेजर में, मेरे स्टार्ट-अप प्रोजेक्ट में "बिल्ड" चेक नहीं किया गया था

(# 2 -> 'डीबग / रिलीज़' ड्रॉप डाउन सूची के तहत टूलबार के माध्यम से सुलभ है।)


7
कॉन्फ़िगरेशन प्रबंधक टिप के लिए +1। मैं एक घंटे के लिए इसे हल करने की कोशिश कर रहा था और वह यह था।
निक साराबिन

मेरे पास TFS में समाधान की कई शाखाएँ थीं। सभी चेक-आउट शाखाओं में बिन और obj निर्देशिकाओं को हटाने से चीजें साफ हो गईं।
स्पेयरबाइट्स

मेरे मामले में, मैं बदल गया था solution platformsसे Any CPUकरने के लिए Mixed Platformगलती से !!! मैं इसे वापस बदल देता हूं Any CPUऔर यह फिर से काम करता है।
वाहेद

धन्यवाद, समाधान> गुण> कॉन्फ़िगरेशन गुण> कॉन्फ़िगरेशन, मेरा कंसोल ऐप (जो एक ही sln में वेब ऐप के लिए परीक्षण चलाता है) अनियंत्रित था।
पन्ना.नौल

23

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

यहाँ मुद्दा यह है कि आपकी dll और या आपकी pdb फाइलें सिंक में नहीं हैं।


1
आपने सीधे उल्लेख नहीं किया, लेकिन "अनलोड प्रोजेक्ट" (पुनः लोड) मेरे लिए काम करता है, धन्यवाद।
javaLover

इसने मेरे लिए काम किया:> इस में से किसी ने भी काम नहीं किया, जो मैंने अंत में कोशिश की थी वह सही था परियोजना पर क्लिक करना और प्रत्येक परियोजना को व्यक्तिगत रूप से पुनर्निर्माण करना। कि .dlls और .pdb फ़ाइलों को अद्यतन किया ताकि मैं डीबग कर सकूं।
Khachatur

प्रोजेक्ट को पुनः लोड करें (पुनः लोड करें) और मेरे लिए वेब सर्वर (IIS) के नवीनतम बिट्स प्रकाशित करें।
जेसन तांग

5

इन कदमों का अनुसरण करें

  1. बस उस परियोजना से बिन निर्देशिका हटाएं जहां DLL उत्पन्न होता है।
  2. प्रोजेक्ट को फिर से बनाएँ।
  3. DLL के संदर्भ में प्रोजेक्ट से संदर्भ निकालें।
  4. फिर से संदर्भ शामिल करें।
  5. का आनंद लें।

4

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


4

आप की जाँच करने के लिए कुछ बातें:

क्या आपने अपने प्रोजेक्ट रेफरेंस को डबल चेक किया है?

क्या आपके पास अभी भी चल रहे वेब सर्वर पर एक विजुअल स्टूडियो है? सिस्टम ट्रे की जांच करें और एक कॉग आइकन वाले पृष्ठ की तलाश करें (आपके पास एक से अधिक हो सकते हैं):

वैकल्पिक शब्द
(स्रोत: msdn.com )

राइट क्लिक करें और इसे बंद / बाहर निकलें। आपके पास एक से अधिक हो सकते हैं। क्या आप अपने परिवर्तनों को अब डीबग कर सकते हैं?

क्या आप डिबग संस्करण चला रहे हैं, लेकिन केवल रिलीज़ संस्करण (या इसके विपरीत) बनाया है?

क्या संकलन वास्तव में सफल हुआ? मुझे पता है कि मैंने "त्रुटियों के बावजूद, क्या आप वैसे भी जारी रखना चाहते हैं?" बिना एहसास के एक-दो बार संदेश दें।


संकलन सफल होता है। जब मैं विजुअल स्टूडियो की बात करता हूं तो मैं थोड़ा सा नॉब करता हूं। मैं यह देखने के लिए कैसे जांचूं कि क्या मैं डिबग संस्करण या रिलीज़ चला रहा हूं?
कुंठित

1
@ घबराया हुआ - मैं सिर्फ स्पष्ट को खत्म करने की कोशिश कर रहा था। यह देखने के लिए कि क्या आप रिलीज़ में हैं या डिबग टूलबार पर "डीबग" आइकन के बगल में ड्रॉप डाउन की जांच करते हैं। यह या तो "डीबग" या "रिलीज़" होगा।
ChrisF

धन्यवाद। यह डिबग कहता है। क्या ऐसा होना चाहिए?
कुंठित

@ प्रत्याशित - यह एक अच्छी शुरुआत है;)। आप रिलीज़ कोड को "डीबग" कर सकते हैं, लेकिन यह उतना उपयोगी नहीं है - लेकिन यहां प्रासंगिक नहीं है। इसका मतलब है कि आप डिबग बायनेरिज़ के निर्माण और चलाने के लिए (या कम से कम होना चाहिए) हैं। मुझे कुछ और सोचना होगा - वास्तव में समस्या को देखे बिना इसका निदान करना थोड़ा मुश्किल है।
ChrisF

"वास्तव में समस्या को देखे बिना इसका निदान करना थोड़ा मुश्किल है" मुझे लगा। मैं हालांकि मदद की सराहना करता हूं
निराश

3

वेब सेवाओं के साथ, दृश्य स्टूडियो "ब्राउज़र में दृश्य" कमांड का उपयोग करके समस्या हो सकती है। यह बिन और obj फ़ोल्डरों में सेवा के DLL और PDB फ़ाइलों को रखता है। क्लाइंट से वेब सेवा में कदम रखते समय, किसी तरह विजुअल स्टूडियो बिन (या obj) फ़ोल्डर में PDB का उपयोग करता है, लेकिन यह प्रोजेक्ट के आउटपुट बिल्ड फ़ोल्डर में DLL का उपयोग करता है। कुछ वर्कअराउंड हैं:

  1. वेब सेवा बिन और obj फ़ाइलों में DLL और PDB फ़ाइलों को हटाने का प्रयास करें।
  2. Visual Studio में "ब्राउज़र में दृश्य" पर क्लिक करने का प्रयास करें।

यदि आपको पहले स्रोत फ़ाइल बेमेल त्रुटि मिली थी, तो Visual Studio ने फ़ाइलनाम को एक काली सूची में जोड़ा हो सकता है। अपने समाधान गुणों की जाँच करें। संवाद बॉक्स के बाईं ओर "सामान्य गुण -> डिबग स्रोत फ़ाइलें" चुनें। यदि आपकी वेब सेवा स्रोत फ़ाइलें "इन स्रोत फ़ाइलों की तलाश न करें" फ़ील्ड में दिखाई देती हैं, तो उन्हें हटा दें।


2

मेरा बस यही मुद्दा था।

मैंने उपरोक्त सभी की कोशिश की, लेकिन केवल इसने काम किया:

  • समाधान के लिए .pdb फ़ाइल हटाएँ।
  • ऑफोबिंग .obj फाइल्स (सिंक से बाहर बताई जा रही फाइल के लिए) डिलीट करें

समाधान का निर्माण।

यह मेरे लिए आगे बढ़ने वाले सभी बिल्ड के लिए मुद्दा तय करता है।


मुझे लगता है कि .pdb फ़ाइलों को हटाना यहाँ महत्वपूर्ण है। मेरे साथ ऐसा हुआ क्योंकि मैंने बासी .pdb फ़ाइलों को दूसरी शाखा से कॉपी किया था।
Danzomida

1

यह है कि मैं दृश्य स्टूडियो 2010 में समस्या कैसे तय की है:

1) "समाधान कॉन्फ़िगरेशन" विकल्प को "डीबग" से "रिलीज़" में बदलें

2) डिबगिंग शुरू करें

3) डिबगिंग बंद करें और "समाधान कॉन्फ़िगरेशन" विकल्प को "डीबग" पर वापस स्विच करें

इसने मेरे लिए काम किया। चरण 3 वैकल्पिक है - यह तब ठीक काम कर रहा था जब मैंने इसे "रिलीज़" में बदल दिया था लेकिन मैं इसे वापस बदलना चाहता था।


1

मेरा समाधान:

मैंने एक नई समाधान फ़ाइल में एक अलग समाधान से एक मौजूदा परियोजना को शामिल किया था।

मैंने यह नहीं देखा कि जब मौजूदा परियोजना का पुनर्निर्माण किया गया था, तो यह अंतिम समाधान को नए समाधान के आउटपुट निर्देशिका में डाल रहा था। मेरे पास OLD समाधान के आउटपुट निर्देशिका में देखने के लिए एक लिंकर पथ था।

नए समाधान के आउटपुट निर्देशिका में खोज करने के लिए मेरी परियोजना को स्विच करना मेरे लिए इस मुद्दे को निर्धारित करता है।


1

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


1

मुझे भी यही समस्या थी। इसे ठीक करने के लिए मैंने VS2013 में डिबग करने के लिए "रिलीज़ मोड" का उपयोग किया। जो मेरे लिए पर्याप्त है, क्योंकि मैं नोड js \ c ++ addon में काम कर रहा हूं।


1

उस प्रोजेक्ट को अनलोड करें जिसमें फ़ाइल है जो त्रुटि पैदा कर रहा है।

प्रोजेक्ट को पुनः लोड करें।

फिक्स्ड


1

विज़ुअल स्टूडियो 2017 में मेरे लिए इस समस्या को हल करने में छिपे हुए .vs फ़ोल्डर को हटाना।


1

मेरी समस्या यह थी कि मेरे हल में दो परियोजनाएँ थीं। दूसरा एक परीक्षण प्रोजेक्ट था जिसे पहले वाले को कॉल किया जाता था। मैंने बिन फ़ोल्डर के रिलीज़ फ़ोल्डर से संदर्भों के लिए रास्ता चुना था।

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

एक बार जब मैंने रिलीज़ फ़ोल्डर में मुख्य प्रोजेक्ट के dll के संदर्भ को हटा दिया और इसे डीबग फ़ोल्डर में dll पर सेट कर दिया, तो समस्या दूर हो गई।


0

समाधान: - समस्या यह है: - यदि आपके समाधान में कुछ परियोजनाएँ, कुछ अन्य परियोजनाओं को देखें, तो कभी-कभी कुछ परियोजनाओं की dll, स्वचालित रूप से अपडेट नहीं होंगी, जब भी आप समाधान का निर्माण करेंगे, तो कुछ परियोजनाओं में पिछले बिल्ड dlls होंगे, न कि नवीनतम डीएलएस

आपको मैन्युअल रूप से जाना होगा और नवीनतम बिल्ड प्रोजेक्ट के dll को संदर्भित प्रोजेक्ट में कॉपी करना होगा


0

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

मेरा समाधान:
1) ओपन Documents\IISExpress\config\applicationhost.config
2) virtualDirectoryडायरेक्ट्री के साथ नोड को ताज़ा कॉपी में अपडेट करें और सहेजें।


0

मेरी समस्या यह थी कि मेरे पास परियोजना में एक webservice थी और मैंने निर्माण पथ को बदल दिया।

डिफ़ॉल्ट बिल्ड पथ को पुनर्स्थापित करने से मेरी समस्या हल हो गई।


0

मुझे भी यही समस्या थी और मैंने यहां पोस्ट किए गए अन्य उत्तरों में अधिकांश मार्गदर्शन का पालन किया, मेरे लिए कुछ भी काम नहीं आया।

मैंने अंततः IIS खोला और अपने वेब एप्लिकेशन के लिए एप्लिकेशन पूल को पुनर्नवीनीकरण किया। मेरे पास IIS संस्करण 8.5.9600 है, मैंने अपने वेब एप्लिकेशन पर राइट-क्लिक किया, फिर: पर क्लिक करें> रीसायकल> रीसायकल एप्लीकेशन पूल> ओके।

ऐसा लगता है कि यह तय हो गया है, ब्रेकप्वाइंट अब उम्मीद के मुताबिक हिट हो रहा है। मुझे लगता है कि बिन और obj फ़ोल्डर्स को हटाने के साथ ऐसा करने से मेरी स्थिति में मदद मिली।

सौभाग्य!


0

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


0

मैंने भी वह अनुभव किया। मैं सिर्फ प्रोजेक्ट पर ओब्ज फोल्डर को खोलता हूं और फिर डीबग फ़ोल्डर को .pdb फाइल को डिलीट करता हूं और बस।


0

यह त्रुटि तब भी होती है यदि आप स्रोत फ़ाइल में परिवर्तन करने का प्रयास करते हैं जो परियोजना का हिस्सा नहीं है।

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


0
  1. सभी ब्रेकप्वाइंट हटाएं।
  2. पुनर्निर्माण।
  3. किया हुआ

0

विजुअल स्टूडियो 2015 में, C ++ का उपयोग करते हुए, मेरे लिए the source file is different from when the module was builtसमस्या क्या थी, यह तय किया गया

  • Visual Studio को पुनरारंभ करें।

0

डिबग-> बिना डिबगिंग के प्रारंभ करें।

इस विकल्प ने मेरे लिए काम किया। उम्मीद है की यह मदद करेगा!


0

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

यदि यह मामला नहीं है:

सुनिश्चित करें कि आप विज़ुअल स्टूडियो को एक मोड में संकलित कर रहे हैं जो .lib फ़ाइलों को सहेजता है:

  1. गुण -> विन्यास गुण -> सामान्य -> ​​विन्यास प्रकार -> स्थैतिक पुस्तकालय

  2. गुण -> कॉन्फ़िगर गुण -> सामान्य -> ​​लक्ष्य विस्तार =। लिब (exe के बजाय)

सुनिश्चित करें कि आउटपुट और मध्यवर्ती निर्देशिका Matlab निर्देशिका में मेल खाते हैं

  1. गुण -> विन्यास गुण -> सामान्य -> ​​आउटपुट निर्देशिका
  2. गुण -> विन्यास गुण -> सामान्य -> ​​मध्यवर्ती निर्देशिका

0

मेरे मामले में, @ एलियट का जवाब काम नहीं करता है। इस समस्या को हल करने के लिए मेरे पास प्रोजेक्ट में मेरी कमी फ़ाइल से बहिष्कृत / शामिल करना , समाधान को शुद्ध करना और फिर से बनाना है।

इन क्रियाओं के बाद, मेरे अंतिम संशोधनों और डिबगर के साथ मेरी फ़ाइल को पुनर्स्थापित किया जाता है।

मुझे उम्मीद है कि यह मदद मिलेगी।


0

मुझे यह समस्या तब आती है जब डीबगिंग कभी-कभी w / विज़ुअल स्टूडियो करता है, लेकिन जब एप्लिकेशन IIS द्वारा परोसा जाता है । (हमें कुछ जटिल कारणों के लिए इस रूप में विकसित होना है कि मूल डेवलपर सेटअप इस परियोजना के साथ कैसे करना है।)

जब मैं फ़ाइल को बदलता हूं और पुनर्निर्माण करता हूं , तो यह बहुत समय को ठीक करता है। मुझे पता है कि यह मूर्खतापूर्ण लगता है, लेकिन मैं कुछ कोड को डिबग करने की कोशिश कर रहा था कि यह देखने के लिए कि यह कुछ अजीब क्यों है जब मैंने इसे थोड़ी देर में नहीं बदला है, और मैंने इस पृष्ठ से एक दर्जन चीजों की कोशिश की, लेकिन यह सिर्फ बदलकर तय किया गया था फ़ाइल..

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.