Saya memiliki dua solusi di ruang kerja saya, katakan A dan B.
Solusi A adalah proyek lama yang saya selesaikan dengan pengkodean beberapa waktu lalu. Dalam solusi B, saya perlu menggunakan beberapa kelas dari Solusi A. Untuk melakukannya, saya menambahkan referensi ke dll dari salah satu proyek dalam solusi A.
Masalahnya adalah ketika saya mencoba men-debug. Saya ingin bisa masuk ke kode A juga. Visual studio tidak dapat memuat kode untuk kelas-kelas ini ("Tidak ada kode sumber yang tersedia untuk lokasi saat ini.") Dan saya hanya dapat melihat pembongkaran, yang tidak berguna.
Satu-satunya cara saya tahu untuk men-debug kelas dari solusi A adalah dengan menjalankan solusi B, lepaskan semua proses (dalam item menu Debug) dan lampirkan proses dari solusi A.
Namun, ini sangat merepotkan dan saya hanya bisa men-debug A atau B sekaligus.
Apakah ada cara untuk memungkinkan melangkah ke kode dll yang direferensikan (yang saya punya kode sumbernya)?
Solusi: Kesalahan saya adalah saya berpikir bahwa sebuah proyek hanya dapat menjadi bagian dari solusi tunggal. Bahkan, sebuah proyek dapat menjadi bagian dari sejumlah solusi.
Ketika Anda perlu referensi proyek lama, Anda cukup menambahkan proyek ke solusinya. Ini dilakukan dengan mengklik kanan solusi baru di Solution Explorer> Add> Existing Project.
Kemudian, Anda dapat menambahkan referensi proyek. Seperti yang ditulis orang lain, Anda mungkin harus benar-benar menghindari penggunaan referensi dll untuk kode Anda sendiri (atau kode lain yang mungkin perlu Anda ubah dan debug).
Referensi yang sangat baik tentang bagaimana solusi harus dirancang dapat ditemukan di MSDN .
Jawaban:
Jika Anda memiliki referensi proyek , itu harus segera berfungsi.
Jika itu adalah referensi file (dll), Anda perlu simbol debugging (file "pdb") berada di folder yang sama dengan dll. Periksa apakah proyek Anda menghasilkan simbol debug (properti proyek => Build => Advanced => Output / Info Debug = penuh); dan jika Anda telah menyalin dll, letakkan pdb dengannya.
Anda juga dapat memuat simbol secara langsung di IDE jika Anda tidak ingin menyalin file apa pun, tetapi lebih banyak pekerjaan.
Opsi termudah adalah menggunakan referensi proyek!
sumber
Saya memiliki masalah yang sama. Dia adalah apa yang saya temukan:
1) pastikan semua proyek menggunakan Kerangka yang sama (ini penting!)
2) di Alat / Opsi> Debugging> Umum pastikan "Aktifkan Hanya Kode Saya (Hanya Dikelola) TIDAK dicentang
3) di Alat / Opsi> Debugging> Simbol menghapus semua simbol yang di-cache, hapus centang dan hapus semua lokasi folder di bawah kotak daftar "File simbol ((pdb) lokasi") kecuali kotak centang "Server Simbol Microsoft" default tetapi masih belum dicabut. Hapus juga jalur statis apa pun di kotak teks "Simbol cache di direktori ini". Klik tombol "Empty Symbols Cache". Akhirnya pastikan tombol radio "Only ditentukan modul" dicentang.
4) dalam menu Build / Configuration Manager untuk semua proyek pastikan konfigurasi dalam mode Debug.
sumber
Hal lain yang perlu diingat, pastikan dll yang direferensikan tidak dipasang di GAC. Setelah pengujian, saya menginstal dll saya ke GAC untuk melakukan pengujian tingkat sistem. Kemudian, ketika saya harus men-debug kode saya lagi, saya tidak bisa masuk ke majelis yang direferensikan sampai saya menghapusnya dari GAC.
sumber
Langkah 1: Buka Tools -> Option -> Debugging
Langkah 2: Hapus centang Aktifkan Just My Code
Langkah 3: Hapus centang Memerlukan file sumber yang sama persis dengan Versi asli
Langkah 4: Hapus centang pada Properties dan Operator
sumber
Saya memiliki
*.pdb
file di folder yang sama dan menggunakan opsi dari Arindam , tetapi masih tidak berhasil. Ternyata saya harus mengaktifkan Aktifkan debugging kode asli yang dapat ditemukan di bawah Properti proyek> Debug .sumber
Ketika Anda ingin menetapkan breakpoint dalam kode sumber dll yang direferensikan, pertama-tama pastikan bahwa Anda memiliki file pdb yang tersedia untuk itu. Kemudian Anda bisa membuka file kode sumber terkait dan mengatur breakpoint di sana. File sumber tidak perlu menjadi bagian dari solusi Anda. Seperti yang dijelaskan dalam Bagaimana saya bisa menetapkan breakpoint dalam kode referensi di Visual Studio?
Anda dapat meninjau breakpoint Anda melalui jendela breakpoint, tersedia melalui Debug -> Windows -> Breakpoints.
Pendekatan ini memiliki manfaat bahwa Anda tidak diharuskan untuk menambahkan proyek yang ada ke solusi Anda hanya untuk keperluan debugging karena meninggalkannya telah menyelamatkan saya banyak waktu membangun. Jelas, membangun solusi dengan hanya satu proyek di dalamnya jauh lebih cepat daripada membangun solusi dengan banyak dari mereka.
sumber
Pastikan DLL Anda tidak terdaftar di GAC. Visual Studio akan menggunakan versi di GAC dan mungkin tidak memiliki informasi debug.
sumber
Saya tidak ingin memasukkan proyek perpustakaan kelas eksternal dalam beberapa solusi saya, jadi saya melangkah ke majelis yang saya konsumsi dengan cara yang berbeda.
Solusi saya memiliki direktori "Majelis Umum" yang berisi DLL saya sendiri dari proyek lain. DLL yang saya referensi juga memiliki file PDB yang menyertainya untuk debugging.
Untuk men-debug dan mengatur breakpoints, saya menetapkan breakpoint di sumber aplikasi yang mengkonsumsi di mana saya memanggil metode atau konstruktor dari perakitan dan kemudian langkah INTO (F11) panggilan metode / konstruktor.
Debugger akan memuat file sumber majelis dalam VS dan breakpoint baru di dalam majelis dapat diatur pada saat itu.
Ini tidak langsung tetapi berfungsi jika Anda tidak ingin menyertakan referensi proyek baru dan hanya ingin referensi majelis bersama sebagai gantinya.
sumber
Itu harus bekerja. Saya biasa men-debug file .exe dan lain-lain pada saat yang sama! Apa yang saya sarankan adalah 1) Sertakan jalur dll dalam proyek B Anda, 2) Kemudian kompilasi dalam debug proyek A Anda 3) Kontrol bahwa jalur menunjuk pada file A dll dan de pdb .... 4) Setelah itu Anda mulai debug proyek B dan jika semuanya baik-baik saja, Anda akan dapat men-debug di kedua proyek!
sumber
Cara maju paling lurus yang saya temukan menggunakan VisualStudio 2019 untuk men-debug perpustakaan eksternal yang Anda referensikan di NuGet, adalah dengan mengambil langkah-langkah berikut:
Alat> Opsi> Debugging> Umum> Untick 'Enable Just My Code'
Pergi ke Assembly Explorer> Buka dari Cache Paket NuGet
Ketikkan nama paket NuGet yang ingin Anda debug di bidang pencarian & klik 'OK'
Dari Assembly Explorer, klik kanan pada assembly yang diimpor dan pilih 'Generate Pdb'
Pilih jalur kustom tempat Anda ingin menyimpan file .PDB dan kerangka yang Anda inginkan untuk menghasilkan ini
Salin file .PDB dari folder yang dihasilkan ke folder Debug Anda dan sekarang Anda dapat mengatur breakpoints pada kode perpustakaan rakitan ini
sumber