Không thể tìm thấy tệp .cs để gỡ lỗi mã nguồn .NET


89

Tôi đã thử thiết lập gỡ lỗi nguồn .NET bằng cách làm theo hướng dẫn MDSN này . Bộ đệm ẩn Biểu tượng được thiết lập đúng cách, cũng như kiểm tra 'Bật bước nguồn .NET Framework'.

Nhưng sau đó, bất cứ khi nào tôi muốn bước vào mã .NET, tôi được nhắc chỉ định vị trí của tệp cs liên quan. Thông báo lỗi là You need to find <filename>.cs to view the source for the current call stack frameThe debugger could not locate the source file <filename>.cs.

Tôi được đề nghị duyệt tìm tệp (nhưng tôi không có nó) hoặc xem bản tháo gỡ (nhưng tôi không muốn điều đó).

Làm thế nào để bước vào mã nguồn .NET?

Câu trả lời:


141

Vâng, trong trường hợp của tôi, tôi không cố gỡ lỗi .Net framework, nhưng tôi gặp phải lỗi tương tự: Không thể tìm thấy tệp .cs để gỡ lỗi mã nguồn .NET . Vì vậy, tôi đã phải bật tùy chọn "Chỉ bật mã của tôi" trong:
Công cụ -> Tùy chọn -> Gỡ lỗi -> Chung -> Chỉ bật mã của tôi

Mỗi tài liệu MS:

Bạn có thể cấu hình Visual Studio để tự động bước qua hệ thống, khuôn khổ và các cuộc gọi không phải người dùng khác và thu gọn các cuộc gọi đó trong cửa sổ ngăn xếp cuộc gọi.

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


Tôi đã bật "Bước mã nguồn .NET Framework" đã tự động vô hiệu hóa "Chỉ là mã của tôi" và nó khiến tôi phát điên khi không thể bước vào cho đến khi tôi tìm thấy điều này. Vì vậy, xem ra khi đánh dấu tùy chọn để xem những gì được khuyết tật :)
Alan Warden

1
Tôi nghĩ rằng tôi đã kích hoạt điều này trước đây. Tôi đã đi và kiểm tra, và chắc chắn, nó đã không được kiểm tra. Cảm ơn!
coinbird

1
Câu trả lời tuyệt vời và đã khắc phục sự cố của tôi nhưng điều này sẽ bỏ qua tệp và không bước vào nó. Có thể cần một giải pháp khác nếu mục tiêu là bước vào tệp.
Word Rearranger

51

Kiểm tra Tools-> Options-> Debugging-> General-> Enable source server supportbí ẩn khiến mọi thứ hoạt động. Tôi hy vọng điều này cũng đúng với bạn


19
Chúa ơi, tại sao nó không hoạt động? Vẫn nhận được nhắc duyệt đến tệp mã nguồn khi cố gắng bước vào mã khung.
gravidThoughts

27

Điều này cũng làm tôi mất một giờ. Cuối cùng tôi đã sửa nó bằng cách đặt lại Cài đặt -> Công cụ -> Cài đặt Nhập và Xuất -> Đặt lại tất cả cài đặt


Nó đã làm việc! Sau khi đặt lại, tôi chỉ cần bỏ qua cài đặt 'tùy chọn-> Gỡ lỗi' và nhập những gì tôi đã xuất. Đẹp!!
Mystic Lin

Đã làm việc trong VS 2015 Pro, tất nhiên tôi không có bất kỳ cài đặt tùy chỉnh nào mà tôi cần vì điều này sẽ thổi bay chúng.
RandomUs1r

Đặt lại tất cả các cài đặt của tôi cũng giải quyết điều này cho tôi ... thật là đau đầu. Tôi có rất nhiều cài đặt màu tùy chỉnh để gỡ lỗi phải lưu chúng vào một tệp riêng - tệp mà tôi không thể sử dụng nữa, grrr.
EspressoBeans

Tôi đặt lại cài đặt và khởi động lại Visual Studio 2017. Việc khởi động lại sau khi đặt lại đã thực hiện thủ thuật.
Siddharth

Tôi đã thực hiện đặt lại này cho Visual Basic .NET với VS Ultimate 2013 vì đó là những gì tôi đang viết mã và việc đặt lại này đã dừng thông báo lỗi datetime.cs lẻ không tìm thấy.
JohnH

7

Làm sạch giải pháp trước khi xây dựng đã giải quyết được vấn đề cho tôi.

Chỉ cần điều hướng và nhấp vào:

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

7

Tôi đã thử tất cả các câu trả lời ở trên và không có gì hiệu quả.

Điều này đã giải quyết nó cho tôi:

Debug -> Delete all Breakpoints

và nó đã giải quyết được vấn đề! Rất nhiều điều khác nhau gây ra vấn đề này.


Sau khi thử mọi kết hợp cài đặt trình gỡ lỗi JIT, làm sạch giải pháp của tôi, khởi động lại VS2019 hàng trăm lần, sửa chữa nó, đặt lại tất cả cài đặt của tôi, v.v., v.v., chính là Xóa tất cả các Điểm ngắt khiến lỗi "Không tìm thấy Nguồn" của tôi biến mất , khi cố gắng gỡ lỗi kiểm tra XUnit. AAAAAAAAAAARGH. Và cảm ơn bạn @HomeMade
Ted

Tôi không hiểu, nhưng nó thực sự giải quyết được vấn đề ...
Lukáš Kmoch

Như một bước bổ sung - tôi phải chỉnh sửa và xây dựng lại giải pháp của mình - để làm cho nó phù hợp với tôi.
Naren

6

Các câu trả lời ở đây đều nói về việc bỏ qua / tránh mã nguồn thay vì thực sự bước vào nó.

@JBSnorrođang đi đúng hướng nhưng vấn đề là Microsoft dường như không xuất bản tất cả các ký hiệu / nguồn .NET mà bạn có thể gặp phải. Tôi không biết họ có cố ý hay không nhưng để bước vào các nguồn MS, họ cần phải xuất bản mọi phiên bản của mọi lắp ráp, đó là một nhiệm vụ hậu cần lớn.

Tools-> Options-> Debugging-> General-> Enable source server supportsẽ hoạt động trong nhiều trường hợp nhưng tôi thấy ví dụ như mscorlib.dllđối với 4.6.1 thiếu ký hiệu và / hoặc nguồn bị dịch ngược. Vì vậy, tôi không thể bước vào mã nguồn phổ biến như Dictionary.cshoặc Task.csví dụ. Vì nguồn và ký hiệu của máy chủ biểu tượng MS có thể thay đổi liên tục. Vấn đề của tôi có thể được giải quyết vào thời điểm bạn đọc điều này?

Khi tôi gỡ lỗi cùng một giải pháp trong Jetbrain's Rider, tôi có thể xem và xem qua mọi lớp trong mọi hợp ngữ .NET mà không gặp vấn đề gì. Tuy nhiên trong VS tôi chỉ có thể bước vào một số lớp mà không vào những lớp khác?

Nếu bạn thực sự cam kết tham gia vào tất cả mã nguồn .NET, bạn có thể sử dụng DotPeek của Jetbrain và dịch ngược các cụm .NET thành các tệp .cs thực tế vào đĩa của bạn. Sau đó, khi bạn thấy điều này,

Ví dụ về mã nguồn không tìm thấy

Giờ đây, bạn có thể duyệt đĩa của mình tới mã nguồn mà bạn đã dịch ngược bằng DotPeek. Chỉ cần đảm bảo rằng bạn đã dịch ngược cùng một phiên bản lắp ráp mà bạn tham chiếu trong dự án của mình. Nếu không, các ký hiệu có thể không khớp với số dòng nguồn chính xác.

Thay vào đó, nếu bạn chỉ muốn ẩn "Nguồn không tìm thấy" này liên tục xuất hiện và bạn không quan tâm đến việc nhập mã không có nguồn nào, hãy đọc @Alex Shermancâu trả lời. Bạn sẽ cần tìm hiểu tập tin vi phạm chứa trong assembly nào, sau đó thêm tên assembly đó vào danh sách loại trừ.

Thức ăn cho suy nghĩ, tôi không phải là một fan hâm mộ của Rider over VS. Rider vẫn còn là một sản phẩm thô và thiếu số lượng công cụ tích hợp sẵn mà VS có. Tuy nhiên!! Tôi thích cài đặt nó song song trong những trường hợp như thế này, nơi tôi biết mình có thể tiến sâu hơn vào đám cỏ dại.


1

Có cùng một vấn đề, không có giải pháp đề xuất ở trên giúp tôi giải quyết vấn đề. Xảy ra vào VS 2017. Khi tôi chạy dự án trong Visual Studio 2019, mọi thứ đều hoạt động. Vì vậy, chỉ cần cố gắng chạy nó trong các môi trường khác. Hy vọng câu trả lời này sẽ giúp ích cho ai đó


Nó đã giúp đỡ tôi. Tôi đã cài đặt 2019 và mọi thứ hoạt động trở lại. Có lẽ tôi đã làm sai cài đặt của mình.
Mo D Genesis

0

Nếu lỗi là do tìm kiếm "nullable.cs" hoặc một số tệp nguồn cốt lõi khác:

Bạn có thể tắt các ký hiệu cho các mô-đun cụ thể bằng cách sử dụng Debug -> Options -> Debugging -> Symbolsvà sau đó ở dưới cùng Specify Excluded Modules.

Đây là hữu ích cho trường hợp bạn làm muốn vô hiệu hóa "Just My Code" để bước vào hội khác mà bạn có PDBs cho. Tôi nghĩ Visual Studio đi kèm với các biểu tượng cho mscorlib.dllnhưng không bao gồm nguồn vì vậy đôi khi bước vào mọi thứ sẽ tìm kiếm "nullable.cs" hoặc một số tệp nguồn cốt lõi khác.



0

Tôi gặp lỗi này khi cập nhật gói NuGet trong một dự án, trong khi thiếu để cập nhật gói đó trong các dự án khác của giải pháp.

Chuyển đến Trình quản lý NuGet của giải pháp và sử dụng chức năng hợp nhất, đảm bảo tất cả các dự án trong giải pháp sử dụng cùng một phiên bản, đã giải quyết được sự cố cho tôi.


0

Trong trường hợp của tôi, tôi đã đổi tên lớp. Có thể nó đã bị nhầm lẫn với một số mô-đun khác. Khi tôi đã đổi tên nó, tôi có thể bước vào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.