आप ".NET फ्रेमवर्क स्रोत को सक्षम कैसे करें" को सक्षम करते हैं?


118

22 फरवरी 2013 को अद्यतन करें: Microsoft कनेक्ट प्रविष्टि में आलोक श्रीराम (प्रोग्राम मैनेजर, बेस क्लास लाइब्रेरी, .NET फ्रेमवर्क) से नोट है कि इस मुद्दे को अब हल किया जाना चाहिए। कनेक्ट प्रविष्टि को हल (फिक्स्ड) के रूप में चिह्नित किया गया है :

यह मुद्दा अब तय किया जाना चाहिए। हमने संदर्भ स्रोतों के लिए एक अद्यतन प्रकाशित किया। कृपया हमें बताएं कि आपकी समस्या अभी भी ठीक नहीं हुई है।

डेढ़ साल।

बोनस लिंक

मूल प्रश्न

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


नोट : यह सवाल एक बड़े पूरे का एक टुकड़ा है:


विजुअल स्टूडियो 2010 एक नई सुविधा के साथ आता है:

  • उपकरण, विकल्प, डिबगिंग, सामान्य, .NET फ्रेमवर्क स्रोत को सक्षम करना

विकल्प मेनू का स्क्रीनशॉट

MSDN पृष्ठ पर निर्देशों का पालन कैसे करें: डीबग करें .NET ढाँचा स्रोत :

.NET फ्रेमवर्क स्रोत डीबगिंग को सक्षम करने के लिए

  1. पर उपकरण मेनू, क्लिक करें विकल्प

  2. में विकल्प संवाद बॉक्स में, क्लिक करें डिबगिंग श्रेणी।

  3. में जनरल बॉक्स, निम्नलिखित चेक बॉक्स का चयन:

    • .NET फ्रेमवर्क स्रोत को सक्षम करना
    • स्रोत सर्वर समर्थन सक्षम करें

मैं यह करता हूँ:

विकल्प मेनू का स्क्रीनशॉट, चयनित प्रासंगिक विकल्पों पर प्रकाश डाला गया

नोट : आप नोट करेंगे, MSDN पेज नोट्स के रूप में, और जैसा कि मैंने देखा, कि .NET .NET सोर्सिंग स्टेप को चेक करने से स्वतः ** मेरा कोड सक्षम करें (केवल प्रबंधित) सक्षम हो जाएगा। मैंने स्रोत सर्वर समर्थन के नैदानिक ​​संदेशों को भी सक्षम किया।

उन विकल्पों को सक्षम करने से स्वचालित रूप से मेरे लिए एक प्रतीक कैश डाउनलोड स्थान निर्धारित होता है:

विकल्प मेनू का स्क्रीनशॉट, कैश निर्देशिका दिखा रहा है (हाइलाइट किया गया)

नोट : Microsoft प्रतीक सर्वर प्रविष्टि पहले से मौजूद है (और हटाया नहीं जा सकता)।


MSDN पृष्ठ प्रतीकों को लोड करने के लिए कहता है:

मॉड्यूल विंडो का उपयोग करके फ्रेमवर्क प्रतीकों को लोड करने के लिए

  1. में मॉड्यूल खिड़की, एक मॉड्यूल जिसके लिए प्रतीकों लोड नहीं होतीं राइट क्लिक करें। आप बता सकते हैं कि सिंबल स्टेटस कॉलम को देखकर चिन्ह लोड किए गए हैं या नहीं ।

  2. जहाँ से आपने पहले संग्रहित प्रतीकों को लोड करने के लिए Microsoft प्रतीक चिह्न सर्वर या प्रतीक पथ से प्रतीकों को डाउनलोड करने के लिए Microsoft प्रतीक सर्वर से प्रतीकों को लोड करने के लिए इंगित करें और Microsoft प्रतीक सर्वर पर क्लिक करें ।

मैं यह कोशिश करता हूं:

यहां छवि विवरण दर्ज करें

और फिर सभी प्रतीकों को लोड किया जाता है:

मॉड्यूल विंडो का स्क्रीनशॉट, जैसा कि ऊपर वर्णित है

मैं एक ब्रेकपॉइंट पर बैठा हूं, जो .NET फ्रेमवर्क कोड में कॉल करने वाला है:

कोड का स्क्रीनशॉट, नीचे दिया गया

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);

पुशिंग F11डीबगर को केवल अगली पंक्ति पर जाने का कारण बनता है:

कोड का स्क्रीनशॉट, नीचे दिया गया

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);

    //Record the running scale factor used
    this.scaleFactor = new SizeF(
            this.scaleFactor.Width * factor.Width,
            this.scaleFactor.Height * factor.Height);

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


मैं अपने कोड में एक ब्रेकपॉइंट पर बैठा हूं। मैं कॉल स्टैक में आगे किसी फ़ंक्शन पर डबल-क्लिक करने का प्रयास करता हूं। मुझे उम्मीद है कि, मुझे .NET कोड में कूदने की अनुमति मिलेगी :

यहां छवि विवरण दर्ज करें

सिवाय इसके कि यह काम नहीं करता है: विजुअल स्टूडियो मुझे बताता है कि कोई स्रोत उपलब्ध नहीं है:

कोई स्रोत उपलब्ध नहीं कह त्रुटि संदेश का स्क्रीनशॉट

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


यदि मैं .NET कोड ( डीबग -> विंडोज -> डिस्सैम्फ़िश ) में कदम रखने की कोशिश करने से पहले डिसएफ़ीड व्यू को स्विच करता हूं, तो मैं call.NET कोड में देख सकता हूं :

कोड का स्क्रीनशॉट

और जब मैं करता हूं, मैं एक डिसबेडिंग को समाप्त करता हूं System.Windows.Forms.ScaleControl:

Disassembly विंडो का स्क्रीनशॉट

जो .NET फ्रेमवर्क स्रोत में कदम रखने में सक्षम होने के समान या उपयोगी नहीं है।

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


मेरे कंप्यूटर पर कॉन्फ़िगर प्रतीक कैश पथ में प्रतीक कैश फ़ाइलें हैं:

फ़ोल्डर लिस्टिंग का स्क्रीनशॉट

तो यह pdbप्रतीक फ़ाइलों को डाउनलोड कर रहा है, लेकिन उनका उपयोग करने से इनकार कर रहा है।

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


लेप्पी ने सुझाव दिया कि मैं Debugलॉग की जांच करता हूं (डिबग लॉग विंडो खुली के साथ; अन्यथा यह कुछ भी लॉग नहीं करता है):

Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'

इससे पहले लॉग में मैं इसे के लिए प्रतीक लोड हो रहा है देखें System.Windows.Forms.dll:

Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.

यहां छवि विवरण दर्ज करें

तो यह मेरे प्रतीकों को ढूंढ रहा है, लेकिन यह दावा करते हुए कि यह उन्हें नहीं मिल सकता है।

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


Microsoft इटली का एक व्यक्ति सुझाव देता है कि मूल फ़ाइलों को मूल संस्करण से मिलान करने के लिए स्रोत फ़ाइलों की आवश्यकता होती है :

विकल्प विंडो का स्क्रीनशॉट

यह तय नहीं किया।

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


यह सुझाव दिया गया है कि .NET फ्रेमवर्क 4.0 के लिए Microsoft के स्रोत सर्वर के साथ एक बग है । उस सुझाव के बाद, मैंने .NET फ्रेमवर्क 3.5 को लक्षित करने के लिए परियोजना को स्विच किया :

यहां छवि विवरण दर्ज करें

यह तय नहीं किया।

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


कहीं न कहीं किसी व्यक्ति को यह महसूस होता है कि क्या उसी समस्या का सामना करने वाला कोई दूसरा व्यक्ति डिबगर के 64-बिट संस्करण का उपयोग कर रहा है । अब, विजुअल स्टूडियो के 64-बिट संस्करण के रूप में ऐसी कोई बात नहीं है, लेकिन मैंने अपने प्रोजेक्ट को AnyCPU से x86 पर स्विच करने का प्रयास किया (यह x64 में JITed जा रहा था), यदि Microsoft 64-बिट प्रोसेसर का समर्थन नहीं करता है:

यहां छवि विवरण दर्ज करें

इसे ठीक नहीं किया:

Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'

मैं Visual Studio 2010 में .NET फ्रेमवर्क स्रोत को कैसे सक्षम करूं?


यह सभी देखें


क्या आपने स्रोत कोड 'कैश' की जाँच की है?
लेप्पी

@leppie "स्रोत कोड 'कैश' से आपका क्या तात्पर्य है?" यदि आप उस फ़ोल्डर का मतलब है जो स्रोत कोड को कैश करता है, तो उसे पॉप्युलेट किया जा रहा है ( अपडेट 4 देखें )
इयान बॉयड

हाँ। क्या उस स्रोत फ़ाइल को खोलना, और ब्रेकपॉइंट सेट करना संभव है?
लीपी

1
इस मुद्दे का उत्कृष्ट लेखन!
एंडरसन 1

1
यह VS2012 में भी काम नहीं करता है। एक दिन के लिए काम किया, जब मैंने सब कुछ कॉन्फ़िगर किया और बस काम करना बंद कर दिया। दो दिन, दर्जनों कॉफ़ी, सैकड़ों वेब पेज बाद में बस काम नहीं करते। एक ही समय में, symbolource.org द्वारा प्रकाशित स्रोत सिर्फ एक आकर्षण की तरह काम करते हैं।
विकिटोर ज़िकला

जवाबों:


35

स्रोत कोड के माध्यम से कदम रखने के लिए PDB केवल RTM और सर्विस पैक के लिए पोस्ट किए जाते हैं। जैसे, जब सुरक्षा अद्यतन सामने आता है और यह डीबग करता है जिसे आप डिबग करने का प्रयास कर रहे हैं, तो यह स्रोत को काम नहीं करने के लिए कदम बढ़ाएगा (यानी, आपको "कोई स्रोत उपलब्ध नहीं है" ग्रेयर्ड आउट के साथ "स्रोत खोजने के लिए ब्राउज़ करें") ")।

हालाँकि, एक बार जब आप सभी उपयुक्त सेटिंग्स बना लेते हैं, तो आप निम्न वर्कअराउंड का उपयोग कर सकते हैं। वर्कअराउंड अनिवार्य रूप से सुरक्षा अद्यतनों को खोजने के लिए है जो डीएल को बदलने का कारण बने, और फिर उन्हें हटा दें। इससे आपके मशीन पर उन सुरक्षा अद्यतनों को हटाने का स्पष्ट नकारात्मक पहलू है।

वैकल्पिक हल

  1. पहचानें कि आप किस डीएल में डिबग करना चाहते हैं (उदाहरण के लिए System.Windows.Forms.dll)
  2. डिबगिंग करते समय, खोलें विज़ुअल स्टूडियो में मॉड्यूल विंडो , संस्करण कॉलम ढूंढें । यदि संस्करण RTM या सर्विस पैक संस्करण नहीं है, तो आपको वर्कफ़्लो करने की आवश्यकता होगी। आमतौर पर RTM dll "द्वारा निर्मित: RTMRel" कहेगा। जबकि एक डीएल जो एक सुरक्षा अद्यतन का हिस्सा था, "आरटीएमजीडीआरडी द्वारा निर्मित" कहेगा। संस्करण संख्या नोट करें (उदाहरण के लिए 4.0.30319.269 द्वारा निर्मित: RTMGDR)
  3. अब, हम इस संस्करण को बनाने वाले अद्यतन को खोजना चाहते हैं। Dll और संस्करण संख्या support.microsoft.com/kb/ पर खोज करके ऐसा करें, उदाहरण के लिए, मैंने निम्न Google खोज की: site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
  4. खोज को अपडेट के बारे में जानकारी बदलनी चाहिए। पता बार में KB नंबर नोट करें। मेरे उदाहरण में संबोधन था http://support.microsoft.com/kb/2604121 , इसलिए KB2604121, वह है जिसमें हम रुचि रखते हैं।
  5. कंट्रोल पैनल पर जाएं-> प्रोग्राम और फीचर्स, और "इंस्टॉल किए गए अपडेट देखें" पर क्लिक करें
  6. एक अपडेट ढूंढें जो KB नंबर को सूचीबद्ध करता है (आप ऊपरी दाएं बॉक्स में खोज का उपयोग कर सकते हैं)।
  7. उस अद्यतन की स्थापना रद्द करें।
  8. इस प्रक्रिया को इसी dll तक दोहराएं जब तक कि dll अपने RTMRel संस्करण या SP संस्करण पर वापस नहीं आ जाता। उदाहरण के लिए, System.Windows.Forms.dll के लिए, मुझे RTMRel संस्करण पर वापस जाने से पहले KB2686827, KB2604121, KB2518870 को निकालना था।

आपको .NET फ्रेमवर्क में प्रत्येक dll के लिए ऐसा करने की आवश्यकता होगी जिसे आप डीबगिंग के बारे में परवाह करते हैं।

एक बार ऐसा करने के बाद, .net स्रोत के भीतर एक ब्रेकपॉइंट सेट करें (उदाहरण के लिए, ब्रेकपॉइंट टैब पर जाएं, नया कहें- फ़ंक्शन पर ब्रेक करें, और System.Windows.Forms.Form.Form दर्ज करें) या किसी एक .net में कदम रखें। तरीकों कि dll में।


1
सही, ट्रिक अनइंस्टॉल करने के लिए सही लोगों का पता लगा रही है (क्योंकि आमतौर पर आपके पास उनमें से बहुत से इंस्टाल हैं, और वे अनइंस्टॉल करने में थोड़ी देर करते हैं)।
मैट स्मिथ

मैं सुरक्षा अद्यतन की स्थापना रद्द नहीं कर सकता। यह कंपनी की नीति के खिलाफ है। क्या Microsoft प्रतीक चिह्न से मेल खाने वाली mscorlib.dll (और अन्य) की प्रतियां प्राप्त करने का एक तरीका है? मेरा mscorlib.dll 4.0.30319.269 (RTMGDR.030319-2600) है। संभवतः, मैं अस्थायी रूप से इस नए डीएलएल के साथ जीएसी को अपडेट कर सकता हूं और स्रोत की कोशिश कर सकता हूं।
केविनरपे

यह शायद मेरी कंपनी की नीति के खिलाफ है - मैं काम पूरा होने के बाद उन्हें फिर से स्थापित करूंगा। मुझे नहीं लगता कि आप सिर्फ एक पुराने संस्करण mscorlib.dll में अन्य dlls से स्वतंत्र कर सकते हैं जो इसके साथ वापस लुढ़का जाना चाहिए (ठीक से काम करने के लिए)। इसके अलावा, पुराने dll के साथ GAC को अस्थायी रूप से अपडेट करना अनिवार्य रूप से सुरक्षा अद्यतन को अस्थायी रूप से अनइंस्टॉल करने के बराबर होगा।
मैट स्मिथ

Microsoft द्वारा सुरक्षा अद्यतनों के लिए स्रोत जारी नहीं करने का संभावित कारण यह है कि कोई व्यक्ति कोड परिवर्तन की तुलना कर सकता है, यह समझ सकता है कि सुरक्षा भेद्यता क्या थी, और अपने कारनामों को बना। Microsoft क्या महसूस नहीं करता है कि ILSpy या Relfector का उपयोग करके "स्रोत कोड" पहले से ही उपलब्ध है। इसलिए Microsoft, स्रोत कोड जारी नहीं करके, वास्तव में किसी को भी सुरक्षित नहीं बना रहा है - यह सिर्फ डेवलपर्स के लिए अधिक कठिन है।
इयान बोयड

2
@IanBoyd मुझे संदेह है कि एमएस की प्रेरणा है। मुझे लगता है कि उनके वर्कफ़्लो बस डीबगिंग के लिए स्रोत पीडीबी को अपडेट करने का समर्थन नहीं करता है। उनका मुख्य रूप से सुरक्षा छेद बंद करने से संबंधित है।
xanadont

6

हालांकि दुर्भाग्य से एक Microsoft के साथ एक समस्या है, जैसा कि लेप्पी ने बताया (और मुझे वही परिणाम देखने को मिला

यह ध्यान दिया जाना चाहिए कि आपका प्रयास वैसे भी विफल होगा, जब से आपने संदर्भित किया:

  • Microsoft प्रतीक सर्वर

के बजाय:

  • referencesource.microsoft.com/symbols

Visual Studio को डीबग करने के लिए FAQ / समस्या निवारण अनुभाग देखें। .NET फ्रेमवर्क सोर्स कोड


4

मुझे जवाब मिल गया है, मुझे लगता है।

मैंने पता लगाया कि फ़िडलर पर क्या हो रहा था। ऐसा लगता है कि केवल प्रतीक वर्तमान में उपलब्ध हैं, और कोई स्रोत नहीं है।

जब वीएस 'रेफरेंस' सर्वर से प्रतीकों को लोड करने की कोशिश करता है तो यह विफल हो जाता है (404)। जैसे ही यह विफल होता है, मुझे लगता है कि यह उस सर्वर पर स्रोत फ़ाइलों के लिए मैप नहीं कर सकता है।

http://referencesource.microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb

उपरोक्त विफलता के बाद, यह कुछ सर्वर की कोशिश करता है जिसे 'msdl' कहा जाता है, जहां यह वास्तविक PDB पाता है (लेकिन ऐसा लगता है कि यह कोई स्रोत कोड जानकारी नहीं है)।

http://msdl.microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_

सब के सब, यह उनके सर्वर के साथ एक (अस्थायी) Microsoft मुद्दा प्रतीत होता है।

मुझे यकीन है कि कुछ समय पहले मेरे पास कुछ स्रोत कोड थे। लेकिन अब यह काम नहीं कर रहा है।

संपादित करें:

मैंने इसे विभिन्न .NET संस्करणों के साथ आज़माया, सभी समान परिणाम। :(


1
खैर कि बहुत ही दिलचस्प हो सकता है अगर मेरी सटीक चरण चाहिए काम (लेकिन नहीं करते हैं), होगा काम (भविष्य में), और ऐसा काम (लेकिन आज)। यह असाधारण रूप से निराशाजनक भी होगा, क्योंकि मैंने समस्या पर 11 घंटे बिताए थे।
इयान बोयड

2
msdl.microsoft.com Microsoft प्रतीक सर्वर
yoel halb

2
और यह फिर से टूट गया है
शमौन_वेर

7 साल बाद "अस्थायी सर्वर समस्या" प्रतीत नहीं होती है और लिंक अभी भी मृत हैं।
जूनियर


1

मेरे मामले में, मैं एक पुराने .NET 2.0 WinForms एप्लिकेशन को डीबग कर रहा था और मुझे "स्रोत उपलब्ध नहीं है" मिला संदेश मिला। मैंने सभी अनुशंसित सेटिंग्स की कोशिश की।

अंततः, मैंने एप्लिकेशन को अस्थायी रूप से .NET 4.5 को लक्षित करने के लिए फिर से बनाया और काम करने के लिए स्रोत को प्राप्त करने में सक्षम था। शायद स्रोत कदम के लिए मेरा ऐप अभी बहुत पुराना था। उद्देश्य को हराने के लिए, मुझे पता है, लेकिन त्वरित और गंदे परीक्षण के लिए यह काम करता है। मेरे पास मौजूद बग अभी भी .NET 4.5 में मौजूद है । :)

लक्ष्य ढाँचा


0

आप संदर्भ स्रोत यहां पा सकते हैं, डाउनलोड के लिए उपलब्ध:

.NET फ्रेमवर्क 4.0 संदर्भ स्रोत

डब्ल्यूसीएफ, डब्ल्यूएफ, और यहां तक ​​कि 4.5 बीटा / आरसी और कई और अधिक के स्रोत भी वहां मिल सकते हैं:

Microsoft संदर्भ नेटफ्रामवर्क


3
स्रोत कोड प्रतीकों के बिना बेकार है। जब तक आप कोड के एक विशिष्ट टुकड़े की खोज करना पसंद नहीं करते हैं, पी
लीपी जूल

0

यहां आधिकारिक निर्देश https://referencesource.microsoft.com/setup.html हैं

.NET फ्रेमवर्क डीबगिंग के लिए Visual Studio 2013 कॉन्फ़िगर करें

Visual Studio 2013 को कॉन्फ़िगर करने के लिए उपकरण में निम्न कार्य करें -> विकल्प -> डिबगिंग -> सामान्य मेनू:

  • मेरे कोड को अक्षम करें
  • संपत्तियों और ऑपरेटरों पर कदम अक्षम करें
  • मूल संस्करण से बिल्कुल मेल खाने के लिए स्रोत फ़ाइलों को अक्षम करने की आवश्यकता होती है
  • .NET फ्रेमवर्क स्रोत को सक्षम करना
  • स्रोत सर्वर समर्थन सक्षम करें

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