Nie można znaleźć plików .cs do debugowania kodu źródłowego .NET

88

Próbowałem skonfigurować debugowanie źródła .NET, postępując zgodnie z tym przewodnikiem MDSN . Pamięć podręczna symboli jest skonfigurowana prawidłowo, podobnie jak zaznaczenie opcji „Włącz krokowanie kodu źródłowego .NET Framework”.

Ale później, gdy chcę wejść do kodu .NET, pojawia się monit o określenie lokalizacji odpowiedniego pliku cs. Komunikat o błędzie to You need to find <filename>.cs to view the source for the current call stack framei The debugger could not locate the source file <filename>.cs.

Zaproponowano mi przeglądanie pliku (ale go nie mam) lub przeglądanie demontażu (ale tego nie chcę).

Jak wejść do kodu źródłowego .NET?

JBSnorro
źródło

Odpowiedzi:

140

Cóż, w moim przypadku nie próbowałem debugować frameworka .Net, ale otrzymywałem ten sam błąd: nie można znaleźć plików .cs do debugowania kodu źródłowego .NET . Musiałem więc włączyć opcję „Włącz tylko mój kod” w:
Narzędzia -> Opcje -> Debugowanie -> Ogólne -> Włącz tylko mój kod

Według dokumentów MS:

Możesz skonfigurować program Visual Studio, aby automatycznie przechodził przez system, platformę i inne wywołania niebędące użytkownikami oraz zwijał te wywołania w oknie stosu wywołań.

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

dier
źródło
Włączyłem „.NET Framework source stepping”, co automatycznie wyłączało „Just my code” i doprowadzało mnie do szału, że nie mogłem wkroczyć, dopóki tego nie znalazłem. Więc uważaj przy zaznaczaniu opcji, aby zobaczyć, co zostanie wyłączone :)
Alan Warden
1
Myślałem, że wcześniej to włączyłem. Poszedłem i sprawdziłem, i na pewno nie było to sprawdzone. Dzięki!
coinbird
1
Świetna odpowiedź i rozwiązałem mój problem, ale spowoduje to pominięcie pliku i nie przejście do niego. Może potrzebować innego rozwiązania, jeśli celem jest wejście do pliku.
Zmiana kolejności słów
51

Sprawdzanie Tools-> Options-> Debugging-> General-> w Enable source server supporttajemniczy sposób sprawiło, że wszystko działało. Mam nadzieję, że to samo dotyczy Ciebie

JBSnorro
źródło
19
Panie, dlaczego to nie działa? Nadal pojawia się monit o przejście do pliku kodu źródłowego podczas próby przejścia do kodu struktury.
gravidThoughts
28

Zajęło mi to również godzinę. Ostatecznie naprawiłem to, resetując Ustawienia -> Narzędzia -> Ustawienia importu i eksportu -> Resetuj wszystkie ustawienia

Stefan
źródło
Zadziałało! Po zresetowaniu po prostu ignoruję ustawienie „opcje-> Debugowanie” i zaimportowałem to, co wyeksportowałem. Ładny!!
Mystic Lin
Pracowałem w VS 2015 Pro, oczywiście nie mam żadnych niestandardowych ustawień, których potrzebuję, ponieważ to by je zdmuchnęło.
RandomUs1r
Zresetowanie wszystkich moich ustawień również rozwiązało to dla mnie ... co za ból głowy. Mam tak wiele niestandardowych ustawień kolorów do debugowania, że ​​musiałem zapisać je w osobnym pliku - którego nie mogę już używać, grrr.
EspressoBeans
Zresetowałem ustawienia i ponownie uruchomiłem Visual Studio 2017. Ponowne uruchomienie po zresetowaniu załatwiło sprawę.
Siddharth
Zrobiłem to resetowanie dla Visual Basic .NET z VS Ultimate 2013, ponieważ to jest to, co koduję, a ten reset zatrzymał dziwny komunikat o błędzie datetime.cs nie może znaleźć.
JohnH
7

Wyczyść rozwiązanie przed kompilacją rozwiązało problem.

Po prostu przejdź i kliknij:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).
Shahar Shokrani
źródło
7

Wypróbowałem wszystkie odpowiedzi z góry i nic nie działało.

To rozwiązało to dla mnie:

Debug -> Delete all Breakpoints

i to rozwiązało problem! Tak wiele różnych rzeczy powoduje ten problem.

Domowej roboty
źródło
Po wypróbowaniu każdej kombinacji ustawień debugera JIT, wyczyszczeniu mojego rozwiązania, ponownym uruchomieniu VS2019 setki razy, naprawieniu go, zresetowaniu wszystkich moich ustawień itp. Itp., Usunięto wszystkie punkty przerwania, które spowodowały zniknięcie błędu „Nie znaleziono źródła” , podczas próby debugowania testu XUnit. AAAAAAAAAAARGH. I dziękuję @HomeMade
Ted
Nie rozumiem, ale to naprawdę rozwiązało problem ...
Lukáš Kmoch
Jako dodatkowy krok - musiałem wyczyścić i przebudować moje rozwiązanie - aby działało dla mnie.
Naren
5

Wszystkie odpowiedzi tutaj mówią o ignorowaniu / unikaniu kodu źródłowego, zamiast faktycznie wkraczać w niego.

@JBSnorrojest na dobrej drodze, ale problem polega na tym, że wydaje się, że firma Microsoft nie publikuje wszystkich symboli / źródeł .NET, które możesz napotkać. Nie wiem, czy jest to zamierzone z ich strony, ale aby wejść do źródeł MS, muszą opublikować każdą wersję każdego zestawu, co jest dużym zadaniem logistycznym.

Tools-> Options-> Debugging-> General-> Enable source server supportbędzie działać w wielu przypadkach, ale stwierdziłem, że na przykład mscorlib.dllw 4.6.1 brakowało symboli i / lub zdekompilowanego źródła. Więc nie mogłem wejść do wspólnego kodu źródłowego, takiego jak Dictionary.cslub Task.csjako przykłady. Ponieważ źródło i symbole serwera MS symboli prawdopodobnie zmieniają się cały czas. Mój problem może zostać rozwiązany zanim to przeczytasz?

Kiedy debuguję to samo rozwiązanie w Jetbrain's Rider, mogę przeglądać i przechodzić przez każdą klasę w każdym zestawie .NET bez żadnego problemu. Jednak w VS mogę wejść tylko do jednej klasy, a do innych nie?

Jeśli naprawdę chcesz wkroczyć do całego kodu źródłowego .NET, możesz użyć DotPeek firmy Jetbrain i zdekompilować zestawy .NET do rzeczywistych plików .cs na dysk. Wtedy, kiedy to zobaczysz,

Nie znaleziono przykładu kodu źródłowego

Możesz teraz przeglądać swój dysk w poszukiwaniu kodu źródłowego zdekompilowanego za pomocą DotPeek. Po prostu upewnij się, że zdekompilowałeś tę samą wersję zestawu, do której odwołujesz się w projekcie. Jeśli nie, symbole mogą nie pasować do poprawnych numerów linii źródłowych.

Zamiast tego, jeśli chcesz po prostu ukryć to „Źródło nie znaleziono” przed ciągłym pojawianiem się i nie chcesz wkraczać do kodu, dla którego nie ma źródeł, przeczytaj @Alex Shermanodpowiedź. Będziesz musiał dowiedzieć się, w jakim zestawie znajduje się plik powodujący problem, a następnie dodaj tę nazwę zestawu do listy wykluczeń.

Do przemyślenia, nie jestem fanem Rider over VS. Rider nadal jest surowy i brakuje mu szalonej ilości wbudowanych narzędzi, jakie ma VS. Jednak!! Lubię mieć to instalowane obok siebie w przypadkach takich jak ten, w których wiem, że mogę zagłębić się w chwasty.

Jedz w Joes
źródło
1

Miałem ten sam problem, żadne z zaproponowanych powyżej rozwiązań nie pomogło mi rozwiązać problemu. Wystąpiło w VS 2017. Kiedy uruchomiłem projekt w Visual Studio 2019, wszystko działało. Więc po prostu spróbuj uruchomić go w innych środowiskach. Mam nadzieję, że ta odpowiedź komuś pomoże

OlegI
źródło
Pomogło mi. Zainstalowałem 2019 i wszystko znowu działa. Może zepsułem ustawienia.
Mo D Genesis
0

Jeśli błąd wynika z wyszukiwania „nullable.cs” lub innego podstawowego pliku źródłowego:

Możesz wyłączyć symbole dla określonych modułów, używając, Debug -> Options -> Debugging -> Symbolsa następnie na dole Specify Excluded Modules.

Jest to przydatne w przypadku, gdy masz zrobić chcesz wyłączyć „Just My Code” do kroku do innych zespołów, że trzeba PDBs dla. Wydaje mi się, że Visual Studio zawiera symbole dla, mscorlib.dllale nie zawiera źródła, więc czasami wchodzenie do rzeczy będzie szukać „nullable.cs” lub innego podstawowego pliku źródłowego.

Alex Sherman
źródło
0

Wystąpił ten błąd podczas aktualizowania pakietu NuGet w projekcie, podczas gdy nie mogę go zaktualizować w innych projektach rozwiązania.

Przejście do NuGet Managera rozwiązania i użycie funkcji konsolidacji, która zapewnia, że ​​wszystkie projekty w rozwiązaniu używają tej samej wersji, rozwiązało problem za mnie.

RonnyR
źródło
0

W moim przypadku zmieniłem nazwę klasy. Może mylono go z jakimś innym modułem. Po zmianie nazwy mogłem wkroczyć.

Kirsten Greed
źródło