Es können keine CS-Dateien zum Debuggen von .NET-Quellcode gefunden werden

91

Ich habe versucht, das Debuggen der .NET-Quelle mithilfe dieser MDSN-exemplarischen Vorgehensweise einzurichten . Der Symbol-Cache ist ordnungsgemäß eingerichtet, ebenso wie das Kontrollkästchen ".NET Framework-Quellschritt aktivieren".

Wenn ich jedoch später in .NET-Code eintreten möchte, werde ich aufgefordert, den Speicherort der entsprechenden CS-Datei anzugeben. Die Fehlermeldung lautet You need to find <filename>.cs to view the source for the current call stack frameund The debugger could not locate the source file <filename>.cs.

Mir wird angeboten, nach der Datei zu suchen (aber ich habe sie nicht) oder eine Demontage anzuzeigen (aber das möchte ich nicht).

Wie gehe ich in den .NET-Quellcode?

JBSnorro
quelle

Antworten:

143

In meinem Fall habe ich nicht versucht, das .NET-Framework zu debuggen, aber es wurde der gleiche Fehler angezeigt : Es können keine CS-Dateien zum Debuggen von .NET-Quellcode gefunden werden . Daher musste ich die Option "Nur meinen Code aktivieren" unter
Extras -> Optionen -> Debuggen -> Allgemein -> Nur meinen Code aktivieren aktivieren

Per MS-Dokumente:

Sie können Visual Studio so konfigurieren, dass System-, Framework- und andere Nichtbenutzeraufrufe automatisch übersprungen und diese Aufrufe im Aufrufstapelfenster reduziert werden.

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

dier
quelle
Ich hatte ".NET Framework Source Stepping" aktiviert, wodurch "Just my Code" automatisch deaktiviert wurde, und es hat mich verrückt gemacht, nicht eingreifen zu können, bis ich dies gefunden habe. Achten Sie also beim Markieren von Optionen darauf, was deaktiviert wird :)
Alan Warden
1
Ich dachte, ich hätte dies zuvor aktiviert. Ich ging und überprüfte, und sicher war es nicht überprüft. Vielen Dank!
Coinbird
1
Tolle Antwort und mein Problem wurde behoben, aber dadurch wird die Datei übersprungen und nicht betreten. Benötigt möglicherweise eine andere Lösung, wenn das Ziel darin besteht, in die Datei einzusteigen.
Word Rearranger
51

Durch Überprüfen von Tools-> Options-> Debugging-> General-> wurde auf Enable source server supportmysteriöse Weise alles zum Laufen gebracht. Ich hoffe das gleiche gilt für dich

JBSnorro
quelle
19
Herr, warum funktioniert es nicht? Sie werden immer noch aufgefordert, zur Quellcodedatei zu navigieren, wenn Sie versuchen, in den Framework-Code einzusteigen.
gravidThoughts
28

Das hat auch eine Stunde gedauert. Ich habe es endgültig behoben, indem ich die Einstellungen -> Extras -> Import- und Exporteinstellungen -> Alle Einstellungen zurückgesetzt zurückgesetzt habe

Stefan
quelle
Es funktionierte! Nach dem Zurücksetzen ignoriere ich einfach die Einstellung 'Optionen-> Debuggen' und importiere das, was ich exportiert habe. Nett!!
Mystic Lin
Ich habe in VS 2015 Pro gearbeitet und natürlich keine benutzerdefinierten Einstellungen, die ich benötige, da dies sie umhauen würde.
RandomUs1r
Das Zurücksetzen aller meiner Einstellungen hat dies auch für mich behoben ... was für Kopfschmerzen. Ich habe so viele benutzerdefinierte Farbeinstellungen für das Debuggen, dass ich sie in einer separaten Datei speichern musste - die ich nicht mehr verwenden kann, grrr.
EspressoBeans
Ich habe die Einstellungen zurückgesetzt und Visual Studio 2017 neu gestartet. Ein Neustart nach dem Zurücksetzen hat den Trick gemacht.
Siddharth
Ich habe diesen Reset für Visual Basic .NET mit VS Ultimate 2013 durchgeführt, da ich damit codiere und durch diesen Reset die ungerade datetime.cs-Fehlermeldung nicht gefunden wurde.
JohnH
7

Bereinigen Sie die Lösung, bevor Build das Problem für mich gelöst hat.

Navigieren Sie einfach und klicken Sie auf:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).
Shahar Shokrani
quelle
7

Ich habe alle Antworten von oben ausprobiert und nichts hat funktioniert.

Das hat es für mich gelöst:

Debug -> Delete all Breakpoints

und es löste das Problem! So viele verschiedene Dinge, die dieses Problem verursachen.

HomeMade
quelle
Nachdem ich jede einzelne Kombination von JIT-Debugger-Einstellungen ausprobiert, meine Lösung bereinigt, VS2019 hunderte Male neu gestartet, repariert, alle meine Einstellungen usw. usw. usw. zurückgesetzt hatte, war es der Fehler "Alle Haltepunkte löschen", der dazu führte, dass mein Fehler "Quelle nicht gefunden" verschwand , wenn versucht wird, einen XUnit-Test zu debuggen. AAAAAAAAAAARGH. Und danke @HomeMade
Ted
Ich verstehe es nicht, aber es hat das Problem wirklich gelöst ...
Lukáš Kmoch
Als zusätzlichen Schritt - ich musste meine Lösung bereinigen und neu erstellen - damit sie für mich funktioniert.
Naren
6

Die Antworten hier sprechen alle davon, den Quellcode zu ignorieren / zu vermeiden, anstatt ihn tatsächlich zu betreten.

@JBSnorroist auf dem richtigen Weg, aber das Problem ist, dass Microsoft anscheinend nicht alle .NET-Symbole / -Quellen veröffentlicht, auf die Sie möglicherweise stoßen. Ich weiß nicht, ob es von ihrer Seite beabsichtigt ist, aber um in MS-Quellen einzusteigen, müssen sie jede Version jeder Baugruppe veröffentlichen, was eine große logistische Aufgabe ist.

Tools-> Options-> Debugging-> General-> Enable source server supportwird in vielen Fällen funktionieren, aber ich fand zum Beispiel mscorlib.dllfür 4.6.1, dass Symbole und / oder dekompilierte Quelle fehlten. Ich konnte also nicht wie Dictionary.csoder Task.csals Beispiele in gängigen Quellcode einsteigen. Da sich die Quelle und die Symbole des MS-Symbolservers wahrscheinlich ständig ändern. Mein Problem kann behoben sein, wenn Sie dies lesen?

Wenn ich dieselbe Lösung in Jetbrains Rider debugge, kann ich jede Klasse in jeder .NET-Assembly problemlos anzeigen und durchlaufen. In VS kann ich jedoch nur in eine Klasse eintreten, nicht aber in andere?

Wenn Sie wirklich den gesamten .NET-Quellcode verwenden möchten, können Sie DotPeek von Jetbrain verwenden und die .NET-Assemblys in tatsächliche CS-Dateien auf Ihrer Festplatte dekompilieren. Wenn du das siehst,

Beispiel für Quellcode nicht gefunden

Sie können jetzt Ihre Festplatte nach dem Quellcode durchsuchen, den Sie mit DotPeek dekompiliert haben. Stellen Sie einfach sicher, dass Sie dieselbe Assemblyversion dekompiliert haben, auf die Sie in Ihrem Projekt verweisen. Wenn nicht, stimmen die Symbole möglicherweise nicht mit den richtigen Quellzeilennummern überein.

Wenn Sie nur verbergen möchten, dass diese "Quelle nicht gefunden" ständig angezeigt wird, und Sie nicht in den Code eintreten möchten, für den es keine Quellen gibt, lesen Sie @Alex Shermandie Antwort. Sie müssen herausfinden, in welcher Assembly die betreffende Datei enthalten ist, und dann diesen Assemblynamen zur Ausschlussliste hinzufügen.

Denkanstöße, ich bin kein Fan von Rider over VS. Der Fahrer ist immer noch ein bisschen roh und es fehlt ihm die verrückte Menge an eingebauten Werkzeugen, die VS hat. Jedoch!! In solchen Fällen, in denen ich weiß, dass ich tiefer in das Unkraut eindringen kann, möchte ich es nebeneinander installieren lassen.

Iss bei Joes
quelle
1

Hatte das gleiche Problem, keine der oben vorgeschlagenen Lösungen half mir, das Problem zu lösen. Trat in VS 2017 auf. Als ich das Projekt in Visual Studio 2019 ausführte, funktionierte alles. Versuchen Sie einfach, es in anderen Umgebungen auszuführen. Hoffe, diese Antwort wird jemandem helfen

OlegI
quelle
Es hat mir geholfen. Ich habe 2019 installiert und alles funktioniert wieder. Vielleicht habe ich meine Einstellungen durcheinander gebracht.
Mo D Genesis
0

Wenn der Fehler von der Suche nach "nullable.cs" oder einer anderen Kernquelldatei herrührt:

Sie können Symbole für bestimmte Module deaktivieren, indem Sie Debug -> Options -> Debugging -> Symbolsund dann unten verwenden Specify Excluded Modules.

Dies ist nützlich für die Fälle , in denen Sie tun deaktivieren möchten „Just My - Code“ zu Schritt in andere Baugruppen , dass Sie PDBs für haben. Ich denke, Visual Studio enthält Symbole für die Quelle mscorlib.dll, enthält diese jedoch nicht. Wenn Sie also in die Dinge eintreten, wird manchmal nach einer "nullable.cs" oder einer anderen Kernquelldatei gesucht.

Alex Sherman
quelle
0

Ich habe diesen Fehler beim Aktualisieren eines NuGet-Pakets in einem Projekt erhalten, während ich es in anderen Projekten der Lösung nicht aktualisiert habe.

Das Problem wurde für mich behoben, indem ich zum NuGet-Manager der Lösung ging und die Konsolidierungsfunktion verwendete, die sicherstellt, dass alle Projekte in der Lösung dieselbe Version verwenden.

RonnyR
quelle
0

In meinem Fall habe ich die Klasse umbenannt. Vielleicht wurde es mit einem anderen Modul verwechselt. Nachdem ich es umbenannt hatte, konnte ich einspringen.

Kirsten Gier
quelle