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

Я попытался настроить отладку источника .NET, выполнив следующее прохождение MDSN. Кэш Symbol настроен правильно, также как и флажок "Включить исходный шаг .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?

Ответ 1

Проверка ToolsOptionsDebuggingGeneralEnable source server support загадочно заставила все работать. Я надеюсь, что то же самое верно для вас.

Ответ 2

Ну, в моем случае я не пытался отлаживать инфраструктуру .Net, но я получал ту же ошибку: Не удалось найти файлы .cs для отладки .NET исходного кода. Так Мне пришлось включить опцию "Включить только мой код":
 Инструменты → Параметры → Отладка → Общие → Включить только мой код

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

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

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

Ответ 3

Мне тоже понадобился час. Я исправил его, сбросив настройки - > Инструменты → Параметры импорта и экспорта → Сброс

Ответ 4

Ответы здесь все говорят об игнорировании/исключении исходного кода, а не вступлении в него.

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

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

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

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

Example of source code not found

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

Очистить решение перед сборкой решило проблему для меня.

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

  1. BuildClean Solution.
  2. BuildBuild Solution (Ctrl + Shift + B).

Ответ 10

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

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