Tidak dapat menemukan file .cs untuk debugging kode sumber .NET

93

Saya mencoba menyiapkan debugging sumber .NET dengan mengikuti panduan MDSN ini . Simbol cache diatur dengan benar, seperti centang 'Enable .NET Framework source stepping'.

Tetapi kemudian, setiap kali saya ingin masuk ke kode .NET, saya diminta untuk menentukan lokasi file cs yang relevan. Pesan kesalahannya adalah You need to find <filename>.cs to view the source for the current call stack framedan The debugger could not locate the source file <filename>.cs.

Saya ditawari untuk mencari file (tetapi saya tidak memilikinya) atau melihat pembongkaran (tapi saya tidak menginginkannya).

Bagaimana cara masuk ke kode sumber .NET?

JBSnorro
sumber

Jawaban:

144

Nah, dalam kasus saya, saya tidak mencoba men-debug kerangka .NET , tetapi saya mendapatkan kesalahan yang sama: Tidak dapat menemukan file .cs untuk men-debug kode sumber .NET . Jadi saya harus mengaktifkan opsi "Aktifkan hanya kode saya" di bawah:
Alat -> Opsi -> Debugging -> Umum -> Aktifkan hanya Kode saya

Per MS docs:

Anda dapat mengonfigurasi Visual Studio untuk secara otomatis melangkahi sistem, kerangka kerja, dan panggilan non-pengguna lainnya dan menciutkan panggilan tersebut di jendela tumpukan panggilan.

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

dier
sumber
Saya telah mengaktifkan ".NET Framework source stepping" yang telah menonaktifkan "Just my code" secara otomatis dan itu membuat saya gila karena tidak dapat melangkah masuk sampai saya menemukan ini. Jadi hati-hati saat menandai opsi untuk melihat apa yang dinonaktifkan :)
Alan Warden
1
Saya pikir saya sebelumnya telah mengaktifkan ini. Saya pergi dan memeriksa, dan tentu saja, itu tidak diperiksa. Terima kasih!
coinbird
1
Jawaban bagus dan memperbaiki masalah saya tetapi ini akan melewatkan file dan tidak masuk ke dalamnya. Mungkin perlu solusi lain jika tujuannya adalah masuk ke file.
Word Rearranger
52

Memeriksa Tools-> Options-> Debugging-> General-> Enable source server supportsecara misterius membuat semuanya bekerja. Saya harap hal yang sama berlaku untuk Anda

JBSnorro
sumber
19
Tuhan, mengapa tidak berhasil? Masih diminta untuk menelusuri file kode sumber saat mencoba masuk ke kode kerangka kerja.
gravidThoughts
29

Ini juga membutuhkan waktu satu jam. Saya akhirnya memperbaikinya dengan mengatur ulang Pengaturan -> Alat -> Pengaturan Impor dan Ekspor -> Atur ulang semua pengaturan

Stefan
sumber
Berhasil! Setelah reset, saya hanya mengabaikan pengaturan 'options-> Debugging' dan mengimpor apa yang saya ekspor. Bagus!!
Mystic Lin
Bekerja di VS 2015 Pro, tentu saja saya tidak memiliki pengaturan khusus yang saya butuhkan karena ini akan membuat mereka bingung.
RandomUs1r
Mengatur ulang semua pengaturan saya juga menyelesaikan ini untuk saya ... sungguh memusingkan. Saya memiliki begitu banyak pengaturan warna kustom untuk debugging harus menyimpannya ke file terpisah - yang tidak dapat saya gunakan lagi, grrr.
EspressoBeans
Saya mengatur ulang pengaturan dan memulai ulang Visual Studio 2017. Memulai ulang setelah mengatur ulang melakukan trik.
Siddharth
Saya melakukan reset ini untuk Visual Basic .NET dengan VS Ultimate 2013 karena itulah yang saya kodekan dan reset ini menghentikan datetime.cs yang aneh tidak dapat menemukan pesan kesalahan.
JohnH
7

Jawaban di sini semua berbicara tentang mengabaikan / menghindari kode sumber daripada benar-benar melangkah ke dalamnya.

@JBSnorroberada di jalur yang benar tetapi masalahnya adalah Microsoft tampaknya tidak menerbitkan semua simbol / sumber .NET yang mungkin Anda temui. Saya tidak tahu apakah itu disengaja di pihak mereka tetapi untuk masuk ke sumber MS mereka perlu mempublikasikan setiap versi dari setiap perakitan yang merupakan tugas logistik yang besar.

Tools-> Options-> Debugging-> General-> Enable source server supportakan berfungsi dalam banyak kasus tetapi saya menemukan misalnya mscorlib.dlluntuk 4.6.1 tidak memiliki simbol dan / atau sumber yang didekompilasi. Jadi saya tidak bisa masuk ke kode sumber umum seperti Dictionary.csatau Task.cssebagai contoh. Karena sumber & simbol server simbol MS kemungkinan besar berubah sepanjang waktu. Masalah saya mungkin teratasi pada saat Anda membaca ini?

Ketika saya men-debug solusi yang sama di Jetbrain's Rider, saya dapat melihat dan melangkah melalui setiap kelas di setiap perakitan NET tanpa masalah. Namun di VS saya hanya bisa masuk ke beberapa kelas tapi tidak ke kelas lain?

Jika Anda benar-benar berkomitmen untuk masuk ke semua kode sumber .NET Anda dapat menggunakan DotPeek Jetbrain dan mendekompilasi rakitan .NET ke file .cs aktual ke disk Anda. Kemudian saat Anda melihat ini,

Contoh kode sumber tidak ditemukan

Sekarang Anda dapat menelusuri disk Anda ke kode sumber yang Anda dekompilasi menggunakan DotPeek. Pastikan Anda mendekompilasi versi perakitan yang sama dengan yang Anda rujuk dalam proyek Anda. Jika tidak, simbol mungkin tidak cocok dengan nomor baris sumber yang benar.

Sebaliknya, Jika Anda hanya ingin menyembunyikan "Sumber Tidak Ditemukan" ini agar tidak terus-menerus muncul dan Anda tidak peduli untuk memasukkan kode yang tidak ada sumbernya, baca @Alex Shermanjawabannya. Anda perlu mencari tahu di assembly mana file yang melanggar itu ada, lalu tambahkan nama assembly itu ke daftar pengecualian.

Makanan untuk dipikirkan, saya bukan penggemar Rider over VS. Pengendara masih merupakan sentuhan mentah dan tidak memiliki jumlah gila yang dimiliki VS perkakas bawaan. Namun!! Saya ingin memasangnya secara berdampingan dalam kasus seperti ini di mana saya tahu saya bisa masuk lebih dalam ke dalam gulma.

Makan di Joes
sumber
7

Bersihkan solusi sebelum membangun menyelesaikan masalah untuk saya.

Cukup navigasikan dan klik:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).
Shahar Shokrani
sumber
7

Saya sudah mencoba semua jawaban dari atas dan tidak ada yang berhasil.

Ini menyelesaikannya untuk saya:

Debug -> Delete all Breakpoints

dan itu memecahkan masalah! Begitu banyak hal berbeda yang menyebabkan masalah ini.

Buatan sendiri
sumber
Setelah mencoba setiap kombinasi pengaturan debugger JIT, membersihkan solusi saya, memulai ulang VS2019 ratusan kali, memperbaikinya, mengatur ulang semua pengaturan saya, dll, dll, dll, itu adalah Hapus semua Breakpoints yang membuat kesalahan "Sumber Tidak Ditemukan" saya hilang , saat mencoba men-debug pengujian XUnit. AAAAAAAAAAARGH. Dan terima kasih @HomeMade
Ted
Sebagai langkah tambahan - saya harus membersihkan & membangun kembali solusi saya - untuk membuatnya bekerja untuk saya.
Naren
1

Punya masalah yang sama, tidak ada solusi yang diusulkan di atas yang membantu saya memecahkan masalah. Terjadi di VS 2017. Ketika saya menjalankan proyek di Visual Studio 2019, semuanya berfungsi. Jadi coba jalankan di lingkungan lain. Semoga jawaban ini akan membantu seseorang

OlegI
sumber
Itu membantu saya. Saya menginstal 2019 dan semuanya berfungsi kembali. Mungkin saya mengacaukan pengaturan saya.
Mo D Genesis
0

Jika kesalahan berasal dari mencari "nullable.cs" atau beberapa file sumber inti lainnya:

Anda dapat menonaktifkan simbol untuk modul tertentu dengan menggunakan Debug -> Options -> Debugging -> Symbolsdan kemudian di bagian bawah Specify Excluded Modules.

Ini berguna untuk kasus-kasus di mana Anda memang ingin menonaktifkan "Just My Code" untuk masuk ke rakitan lain yang Anda miliki PDB-nya. Visual Studio Saya pikir dilengkapi dengan simbol mscorlib.dlltetapi tidak menyertakan sumber sehingga kadang-kadang melangkah ke sesuatu akan mencari "nullable.cs" atau file sumber inti lainnya.

Alex Sherman
sumber
0

Saya mendapat kesalahan ini saat memperbarui paket NuGet dalam sebuah proyek, sementara hilang untuk memperbaruinya di proyek lain dari solusi.

Pergi ke Manajer NuGet solusi dan menggunakan fungsi konsolidasi, yang memastikan semua proyek dalam solusi menggunakan versi yang sama, menyelesaikan masalah untuk saya.

RonnyR
sumber
0

Dalam kasus saya, saya akhirnya mengganti nama kelas. Mungkin mulai bingung dengan modul lain. Setelah saya mengganti namanya, saya bisa masuk.

Kirsten Keserakahan
sumber