Impossibile trovare file .cs per il debug del codice sorgente .NET


93

Ho provato a configurare il debug dell'origine .NET seguendo questa procedura dettagliata di MDSN . La cache dei simboli è configurata correttamente, così come il segno di spunta "Abilita stepping sorgente .NET Framework".

Ma successivamente, ogni volta che voglio entrare nel codice .NET, mi viene chiesto di specificare la posizione del file cs pertinente. Il messaggio di errore è You need to find <filename>.cs to view the source for the current call stack framee The debugger could not locate the source file <filename>.cs.

Mi viene offerto di cercare il file (ma non ce l'ho) o di visualizzare uno smontaggio (ma non lo voglio).

Come entrare nel codice sorgente .NET?

Risposte:


144

Bene, nel mio caso non stavo cercando di eseguire il debug del framework .Net, ma ho ricevuto lo stesso errore: Impossibile trovare i file .cs per il debug del codice sorgente .NET . Quindi ho dovuto attivare l'opzione "Abilita solo il mio codice" in:
Strumenti -> Opzioni -> Debug -> Generale -> Abilita solo il mio codice

Per documenti MS:

È possibile configurare Visual Studio per passare automaticamente al sistema, al framework e ad altre chiamate non utente e comprimere tali chiamate nella finestra dello stack di chiamate.

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


Avevo abilitato ".NET Framework source stepping" che aveva disabilitato automaticamente "Solo il mio codice" e mi ha fatto impazzire non essere in grado di intervenire finché non ho trovato questo. Quindi fai attenzione quando contrassegni le opzioni per vedere cosa viene disabilitato :)
Alan Warden

1
Pensavo di averlo abilitato in precedenza. Sono andato a controllare e, abbastanza sicuro, non è stato controllato. Grazie!
coinbird

1
Ottima risposta e risolto il mio problema, ma questo salterà il file e non entrerà in esso. Potrebbe essere necessaria un'altra soluzione se l'obiettivo è entrare nel file.
Riorganizzatore di parole

53

Controllando Tools-> Options-> Debugging-> General-> Enable source server supportmisteriosamente ha fatto funzionare tutto. Spero che lo stesso sia vero per te


19
Signore, perché non funziona? Viene ancora richiesto di passare al file del codice sorgente quando si tenta di entrare nel codice del framework.
gravidThoughts

29

Anche questo mi ha richiesto un'ora. L'ho risolto finalmente ripristinando le Impostazioni -> Strumenti -> Impostazioni di importazione ed esportazione -> Ripristina tutte le impostazioni


Ha funzionato! Dopo il ripristino, ignoro semplicemente l'impostazione "Opzioni-> Debug" e ho importato ciò che ho esportato. Bello!!
Mystic Lin

Ha funzionato in VS 2015 Pro, ovviamente non ho alcuna impostazione personalizzata di cui ho bisogno in quanto ciò li spazzerebbe via.
RandomUs1r

Il ripristino di tutte le mie impostazioni ha anche risolto questo per me ... che mal di testa. Ho così tante impostazioni di colore personalizzate per il debug che ho dovuto salvarle in un file separato, che non posso più usare, grrr.
EspressoBeans

Ho ripristinato le impostazioni e riavviato Visual Studio 2017. Il riavvio dopo il ripristino ha funzionato.
Siddharth

Ho eseguito questo ripristino per Visual Basic .NET con VS Ultimate 2013 perché è quello con cui sto codificando e questo ripristino ha interrotto lo strano datetime.cs non riesce a trovare il messaggio di errore.
JohnH

7

Le risposte qui parlano tutte di ignorare / evitare il codice sorgente invece di entrarvi effettivamente.

@JBSnorroè sulla strada giusta ma il problema è che Microsoft non sembra pubblicare tutti i simboli / sorgenti .NET che potresti incontrare. Non so se sia intenzionale da parte loro, ma per entrare nelle fonti MS hanno bisogno di pubblicare ogni versione di ogni assembly che è un grande compito logistico.

Tools-> Options-> Debugging-> General-> Enable source server supportfunzionerà in molti casi ma ho scoperto che mscorlib.dllper la 4.6.1 mancavano simboli e / o sorgenti decompilate. Quindi non ho potuto entrare nel codice sorgente comune come Dictionary.cso Task.cscome esempi. Poiché la sorgente ei simboli di MS symbol server probabilmente cambiano continuamente. Il mio problema potrebbe essere risolto nel momento in cui lo leggerai?

Quando eseguo il debug della stessa soluzione in Jetbrain's Rider, posso vedere e passare attraverso ogni classe in ogni assembly .NET senza problemi. Tuttavia in VS posso entrare solo in alcune classi ma non in altre?

Se sei veramente impegnato ad entrare in tutto il codice sorgente .NET puoi usare DotPeek di Jetbrain e decompilare gli assembly .NET in file .cs effettivi sul tuo disco. Poi quando vedi questo,

Esempio di codice sorgente non trovato

Ora puoi sfogliare il tuo disco fino al codice sorgente che hai decompilato usando DotPeek. Assicurati solo di aver decompilato la stessa versione dell'assembly a cui fai riferimento nel tuo progetto. In caso contrario, i simboli potrebbero non corrispondere ai numeri di riga di origine corretti.

Invece, se vuoi solo nascondere questa "Sorgente non trovata" in modo che appaia costantemente e non ti interessa entrare nel codice per cui non ci sono fonti, leggi @Alex Shermanla risposta. Sarà necessario capire in quale assembly è contenuto il file offensivo, quindi aggiungere il nome dell'assembly all'elenco di esclusione.

Spunti di riflessione, non sono un fan di Rider over VS. Rider è ancora un tocco grezzo e manca della quantità folle di strumenti incorporati che VS ha. Però!! Mi piace averlo installato fianco a fianco in casi come questo in cui so di poter entrare più a fondo nelle erbacce.


7

Pulisci la soluzione prima che la build risolva il problema per me.

Basta navigare e fare clic su:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).

7

Ho provato tutte le risposte dall'alto e niente ha funzionato.

Questo ha risolto per me:

Debug -> Delete all Breakpoints

e ha risolto il problema! Tante cose diverse che causano questo problema.


Dopo aver provato ogni singola combinazione di impostazioni del debugger JIT, pulire la mia soluzione, riavviare VS2019 centinaia di volte, ripararlo, reimpostare tutte le mie impostazioni, ecc. Ecc. , quando si tenta di eseguire il debug di un test XUnit. AAAAAAAAAAARGH. E grazie @HomeMade
Ted

Come passaggio aggiuntivo, ho dovuto ripulire e ricostruire la mia soluzione per farla funzionare per me.
Naren

1

Aveva lo stesso problema, nessuna delle soluzioni proposte sopra mi ha aiutato a risolvere il problema. Si è verificato in VS 2017. Quando ho eseguito il progetto in Visual Studio 2019, tutto ha funzionato. Quindi prova a eseguirlo in altri ambienti. Spero che questa risposta possa aiutare qualcuno


Mi ha aiutato. Ho installato il 2019 e tutto funziona di nuovo. Forse ho sbagliato le mie impostazioni.
Mo D Genesis

0

Se l'errore è dovuto alla ricerca di "nullable.cs" o di un altro file sorgente principale:

È possibile disabilitare i simboli per moduli specifici utilizzando Debug -> Options -> Debugging -> Symbolse quindi in basso Specify Excluded Modules.

Questo è utile per i casi in cui si fare desidera disattivare "Just My Code" di entrare in altri assiemi che avete PDBs per. Visual Studio penso venga fornito con i simboli mscorlib.dllma non include la sorgente, quindi a volte entrando nelle cose si cercherà un "nullable.cs" o qualche altro file sorgente principale.



0

Ho ricevuto questo errore durante l'aggiornamento di un pacchetto NuGet in un progetto, mentre mancava l'aggiornamento in altri progetti della soluzione.

Andando a NuGet Manager della soluzione e utilizzando la funzione di consolidamento, che garantisce che tutti i progetti nella soluzione utilizzino la stessa versione, ha risolto il problema per me.


0

Nel mio caso ho finito per rinominare la classe. Forse si stava confondendo con qualche altro modulo. Dopo averlo rinominato, potevo intervenire.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.