Не вдається знайти файли .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

Це зайняло у мене і годину. Я нарешті виправив це, скинувши налаштування -> Інструменти -> Параметри імпорту та експорту -> Скинути всі налаштування


Це спрацювало! Після скидання я просто ігнорую налаштування 'options-> Debugging' та імпортую те, що експортував. Приємно !!
Mystic Lin

Працював у 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, ви можете використовувати DotPeek Jetbrain і декомпілювати збірки .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.