Не удается найти файлы .cs для отладки исходного кода .NET


88

Я попытался настроить отладку исходного кода .NET, выполнив это пошаговое руководство по MDSN . Кэш символов настроен правильно, как и установлен флажок «Включить пошаговое выполнение исходного кода .NET Framework».

Но впоследствии, когда я захочу войти в .NET-код, мне будет предложено указать местоположение соответствующего файла cs. Сообщение об ошибке - 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?

Ответы:


140

Что ж, в моем случае я не пытался отладить инфраструктуру .Net, но получал ту же ошибку: не могу найти файлы .cs для отладки исходного кода .NET . Поэтому мне пришлось включить параметр «Включить только мой код» в разделе:
Инструменты -> Параметры -> Отладка -> Общие -> Включить только мой код.

В документах MS:

Вы можете настроить Visual Studio на автоматический переход через систему, платформу и другие вызовы, не относящиеся к пользователю, и свернуть эти вызовы в окне стека вызовов.

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


Я включил «степпинг исходного кода .NET Framework», который автоматически отключал «Только мой код», и это сводило меня с ума, что я не мог вмешаться, пока я не нашел это. Так что
Алан Уорден,

1
Я думал, что раньше включал это. Я пошел и проверил, и, конечно же, ничего не проверили. Благодарность!
coinbird

1
Отличный ответ и исправил мою проблему, но это пропустит файл и не войдет в него. Может потребоваться другое решение, если цель - шагнуть в файл.
Word Rearranger

51

Проверка Tools-> Options-> Debugging-> General-> Enable source server supportтаинственным образом заставила все заработать. Я надеюсь то же самое верно и для вас


19
Господа, а почему не работает? По-прежнему появляется предложение перейти к файлу исходного кода при попытке войти в код платформы.
gravidThoughts

28

Это тоже заняло у меня час. Я исправил это наконец, сбросив Настройки -> Инструменты -> Настройки импорта и экспорта -> Сбросить все настройки


Это сработало! После сброса я просто игнорирую параметр «Параметры-> Отладка» и импортировал то, что экспортировал. Ницца!!
Мистик Лин

Работал в VS 2015 Pro, конечно, у меня нет никаких пользовательских настроек, которые мне нужны, так как это их снесет.
RandomUs1r

Сброс всех моих настроек также решил эту проблему для меня ... какая головная боль. У меня так много пользовательских настроек цвета для отладки, что мне пришлось сохранить их в отдельный файл, который я больше не могу использовать, grrr.
EspressoBeans

Я сбросил настройки и перезапустил Visual Studio 2017. Перезагрузка после сброса сделала свое дело.
Сиддхарт,

Я сделал этот сброс для Visual Basic .NET с VS Ultimate 2013, потому что это то, что я кодирую, и этот сброс остановил нечетное сообщение datetime.cs не может найти сообщение об ошибке.
JohnH

7

Очистите решение, прежде чем сборка решит проблему для меня.

Просто перейдите и нажмите:

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

7

Я перепробовал все ответы сверху, и ничего не помогло.

Это решило это для меня:

Debug -> Delete all Breakpoints

и это решило проблему! Так много разных вещей вызывают эту проблему.


После попытки каждой комбинации настроек отладчика JIT, очистки моего решения, перезапуска VS2019 сотни раз, его восстановления, сброса всех моих настроек и т. Д. И т. Д. И т. Д. Именно удаление всех точек останова заставило мою ошибку «Источник не найден» исчезнуть , при попытке отладки теста XUnit. AAAAAAAAAAARGH. И спасибо @HomeMade
Тед,

Я не понимаю, но это действительно решило проблему ...
Лукаш Кмох

В качестве дополнительного шага - мне пришлось очистить и перестроить свое решение - чтобы оно работало для меня.
Нарен

5

Все ответы здесь говорят об игнорировании / избегании исходного кода вместо того, чтобы фактически входить в него.

@JBSnorroнаходится на правильном пути, но проблема в том, что Microsoft, похоже, не публикует все символы / источники .NET, с которыми вы можете столкнуться. Я не знаю, намеренно ли это с их стороны, но чтобы войти в исходники MS, им нужно публиковать каждую версию каждой сборки, что является большой логистической задачей.

Tools-> Options-> Debugging-> General-> Enable source server supportбудет работать во многих случаях, но я обнаружил, например, что mscorlib.dllдля 4.6.1 не хватало символов и / или декомпилированного исходного кода. Поэтому я не мог перейти к общему исходному коду, например, Dictionary.csили в Task.csкачестве примеров. Поскольку исходный код и символы сервера символов MS, вероятно, постоянно меняются. Моя проблема может быть решена к тому времени, когда вы это прочтете?

Когда я отлаживаю одно и то же решение в Jetbrain's Rider, я могу без проблем просматривать и проходить через каждый класс в каждой сборке .NET. Однако в VS я могу войти только в один класс, но не в другой?

Если вы действительно привержены использованию всего исходного кода .NET, вы можете использовать Jetbrain DotPeek и декомпилировать сборки .NET в реальные файлы .cs на свой диск. Затем, когда вы это увидите,

Пример исходного кода не найден

Теперь вы можете найти на диске исходный код, декомпилированный с помощью DotPeek. Просто убедитесь, что вы декомпилировали ту же версию сборки, на которую ссылаетесь в своем проекте. В противном случае символы могут не совпадать с правильными номерами строк исходного текста.

Вместо этого, если вы просто хотите скрыть этот «Источник не найден» от постоянного появления, и вам не нужно заходить в код, для которого нет источников, прочтите @Alex Shermanответ. Вам нужно будет выяснить, в какой сборке содержится файл-нарушитель, а затем добавить это имя сборки в список исключений.

Пища для размышлений, я не фанат Rider over VS. Rider по-прежнему остается сырым, и ему не хватает сумасшедшего количества встроенных инструментов, которые есть в VS. Однако!! Мне нравится, когда они устанавливаются бок о бок в таких случаях, когда я знаю, что могу глубже проникнуть в сорняки.


1

Если бы была такая же проблема, ни одно из предложенных выше решений не помогло мне решить проблему. Произошло в VS 2017. Когда я запустил проект в Visual Studio 2019, все заработало. Так что просто попробуйте запустить его в других средах. Надеюсь, этот ответ кому-то поможет


Мне это помогло. Я установил 2019 и снова все работает. Может я испортил свои настройки.
Mo D Genesis

0

Если ошибка связана с поиском "nullable.cs" или другого исходного файла ядра:

Вы можете отключить символы для определенных модулей, используя, Debug -> Options -> Debugging -> Symbolsа затем внизу Specify Excluded Modules.

Это полезно в случаях, когда вы действительно хотите отключить «Только мой код», чтобы переходить к другим сборкам, для которых у вас есть PDB. Visual Studio, я думаю, поставляется с символами, mscorlib.dllно не включает исходный код, поэтому иногда при входе в вещи будут искать "nullable.cs" или какой-либо другой исходный файл ядра.



0

Я получил эту ошибку при обновлении пакета NuGet в проекте, но не смог обновить его в других проектах решения.

Переход к NuGet Manager решения и использование функции консолидации, которая гарантирует, что все проекты в решении используют одну и ту же версию, решили проблему для меня.


0

В моем случае я переименовал класс. Может его перепутали с каким-то другим модулем. Как только я его переименовал, я мог вмешаться.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.