c# - .NET स्रोत कोड डीबगिंग के लिए.cs फ़ाइलें नहीं ढूँढ सकता




debugging (6)

आप यहाँ स्रोत कोड पा सकते हैं ताकि आप ठीक से डिबग कर सकें। https://referencesource.microsoft.com/#mscorlib,namespaces

मैंने इस MDSN वॉकथ्रू का पालन ​​करके .NET स्रोत को डीबग करने की कोशिश की। प्रतीक कैश ठीक से सेटअप है, जैसा कि चेक 'Enable .NET फ्रेमवर्क सोर्स स्टेपिंग' है।

लेकिन बाद में, जब भी मैं .NET कोड में कदम रखना चाहता हूं, मुझे संबंधित सीएस फ़ाइल के स्थान को निर्दिष्ट करने के लिए प्रेरित किया जाता है। त्रुटि संदेश You need to find <filename>.cs to view the source for the current call stack frame और The debugger could not locate the source file <filename>.cs

मुझे फ़ाइल के लिए ब्राउज़ करने की पेशकश की गई है (लेकिन मेरे पास यह नहीं है) या एक असंतुष्टता देखें (लेकिन मैं ऐसा नहीं चाहता)।

.NET स्रोत कोड में कदम कैसे करें?


इसमें भी मुझे एक घंटा लगा। मैंने सेटिंग -> टूल्स -> आयात और निर्यात सेटिंग्स -> सभी सेटिंग्स रीसेट करके अंततः इसे ठीक कर दिया


खैर, मेरे मामले में मैं .Net फ्रेमवर्क को डीबग करने का प्रयास नहीं कर रहा था, लेकिन मुझे एक ही त्रुटि मिल रही थी: .NET स्रोत कोड डीबग करने के लिए फ़ाइलें नहीं मिल सकती हैं । इसलिए मुझे "मेरे कोड को सक्षम करें" विकल्प के तहत चालू करना था:
उपकरण -> विकल्प -> डिबगिंग -> सामान्य -> ​​सिर्फ मेरा कोड सक्षम करें

प्रति एमएस डॉक्स:

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

https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code


मुझे यह त्रुटि एक प्रोजेक्ट में NuGet पैकेज को अपडेट करते समय मिली, जबकि समाधान की अन्य परियोजनाओं में इसे अपडेट करने के लिए गायब है।

समाधान के NuGet प्रबंधक के पास जाना और समेकित फ़ंक्शन का उपयोग करना, जो समाधान में सभी परियोजनाओं को एक ही संस्करण का उपयोग करना सुनिश्चित करता है, मेरे लिए समस्या का समाधान किया।


यदि त्रुटि "nullable.cs" या किसी अन्य मुख्य स्रोत फ़ाइल की तलाश से है:

आप Debug -> Options -> Debugging -> Symbols का उपयोग करके विशिष्ट मॉड्यूल के लिए प्रतीकों को अक्षम कर सकते हैं और फिर नीचे Specify Excluded Modules

यह उन मामलों के लिए उपयोगी है जहां आप अन्य विधानसभाओं में कदम रखने के लिए "जस्ट माय कोड" को निष्क्रिय करना चाहते हैं, जिनके लिए आपके पास पीडीबी है। मुझे लगता है कि Visual Studio mscorlib.dll लिए प्रतीकों के साथ आता है, लेकिन स्रोत को शामिल नहीं करता है इसलिए कभी-कभी चीजों में कदम रखने से "nullable.cs" या कुछ अन्य कोर स्रोत फ़ाइल दिखाई देगी।


यहां सभी उत्तर स्रोत कोड को अनदेखा करने / टालने के बजाय वास्तव में इसमें कदम रखने के बारे में बात करते हैं।

@JBSnorro सही रास्ते पर है, लेकिन समस्या यह है कि Microsoft उन सभी .NET प्रतीकों / स्रोत को प्रकाशित नहीं कर सकता है जिनका आप सामना कर सकते हैं। मुझे नहीं पता कि यह उनकी ओर से जानबूझकर किया गया है लेकिन एमएस स्रोतों में कदम रखने के लिए उन्हें हर विधानसभा के हर संस्करण को प्रकाशित करने की आवश्यकता है जो एक बड़ा शैक्षणिक कार्य है।

Tools -> Options -> Debugging -> General -> Enable source server support कई मामलों में काम करेगा, लेकिन मैंने उदाहरण के लिए पाया कि mscorlib.dll 4.6.1 के लिए प्रतीकों और / या विघटित स्रोत की कमी थी। इसलिए मैं Dictionary.cs या Task.cs जैसे सामान्य स्रोत कोड में कदम नहीं उठा सकता। चूंकि एमएस सिंबल सर्वर का सोर्स और सिंबल हर समय बदलता रहता है। जब आप इसे पढ़ते हैं, तब तक मेरा मुद्दा हल हो सकता है?

जब मैं Jetbrain के राइडर में एक ही समाधान डिबग करता हूं, तो मैं प्रत्येक .NET असेंबली में हर वर्ग के माध्यम से देख सकता हूं और बिना किसी मुद्दे के साथ कदम रख सकता हूं। हालांकि वीएस में मैं केवल कुछ वर्ग में कदम रख सकता हूं लेकिन दूसरों में नहीं?

यदि आप वास्तव में सभी .NET स्रोत कोड में कदम रखने के लिए प्रतिबद्ध हैं, तो आप Jetbrain के DotPeek का उपयोग कर सकते हैं और .NET असेंबली को अपनी डिस्क पर वास्तविक .cs फ़ाइलों के साथ विघटित कर सकते हैं। फिर जब आप यह देखते हैं,

अब आप अपनी डिस्क को उस स्रोत कोड में ब्राउज़ कर सकते हैं जिसे आपने DotPeek का उपयोग करके विघटित किया है। बस सुनिश्चित करें कि आपने उसी असेंबली संस्करण को विघटित कर दिया है जिसे आप अपनी परियोजना में संदर्भित करते हैं। यदि नहीं, तो प्रतीक सही स्रोत लाइन संख्या के साथ मेल नहीं खा सकते हैं।

इसके बजाय, यदि आप लगातार दिखाई देने वाले इस "सोर्स नॉट फाउंड" को छुपाना चाहते हैं और आपको कोड में कदम रखने की कोई परवाह नहीं है, तो इसके लिए @Alex Sherman का जवाब पढ़ें। आपको यह पता लगाने की आवश्यकता होगी कि असेंबली फ़ाइल किस विधानसभा में निहित है, फिर उस विधानसभा का नाम बहिष्करण सूची में जोड़ें।

विचार के लिए भोजन, मैं वी.एस. पर राइडर का प्रशंसक नहीं हूं। राइडर अभी भी एक स्पर्श कच्चा है और वीएस के पास टूलींग में निर्मित पागल राशि का अभाव है। हालाँकि!! मैं इसे इस तरह के मामलों में अगल-बगल स्थापित करना पसंद करता हूं, जहां मुझे पता है कि मैं मातम में गहरा हो सकता हूं।





debugging