file sumber berbeda dengan saat modul dibuat

103

Ini membuatku gila.

Saya memiliki proyek yang agak besar yang saya coba modifikasi. Saya perhatikan sebelumnya bahwa ketika saya mengetik DbCommand, studio visual tidak melakukan penyorotan sintaks di atasnya, dan saya menggunakan menggunakan System.Data.Common.

Meskipun tidak ada yang disorot, proyek tersebut tampaknya berjalan dengan baik di browser saya. Jadi saya memutuskan untuk menjalankan debugger untuk melihat apakah semuanya benar-benar berfungsi sebagaimana mestinya.

Setiap kali kelas yang tidak melakukan penyorotan dipanggil, saya mendapatkan "the source file is different from when the module was built"pesannya.

Saya membersihkan solusi dan membangunnya kembali beberapa kali, menghapus file tmp, mengikuti semua petunjuk di sini. Mendapatkan "File sumber berbeda dari saat modul dibuat." , memulai ulang server web dan tetap memberi tahu saya bahwa file sumber berbeda padahal sebenarnya tidak.

Saya tidak dapat menguji kode apa pun yang saya tulis hari ini karena ini.

  • Bagaimana sumber bisa berbeda dari biner ketika saya hanya mematuhinya?
  • Apakah ada cara untuk membuat studio visual masuk akal, atau saya hanya melewatkan sesuatu?
frustratedcoder
sumber
Maaf jika itu sedikit berlebihan. Versi singkat: Saya mengkompilasi program saya, saya kemudian mencoba men-debugnya dan studio visual memberi tahu saya bahwa file sumber saya (yang baru saya kompilasi) berbeda dari modul yang baru saya buat. Saya hanya ingin tahu mengapa ia berpikir demikian
frustratedcoder

Jawaban:

111

Saya mendapat masalah ini menjalankan aplikasi konsol di mana sumber yang berbeda adalah sumber yang memiliki titik masuk (Main void statis). Menghapus direktori bin dan obj dan melakukan pembangunan kembali lengkap sepertinya memperbaiki hal ini, tetapi setiap kali saya membuat perubahan kode, itu akan menjadi ketinggalan zaman lagi.

Alasan saya menemukan ini adalah:

  1. Saya telah memeriksa "Hanya membangun proyek startup dan ketergantungan pada Run" (Alat -> Opsi -> Proyek dan Solusi -> Bangun dan Jalankan)
  2. Di Pengelola Konfigurasi, proyek start-up saya tidak mencentang "Build"

(Untuk # 2 -> dapat diakses melalui toolbar di bawah daftar drop-down 'Debug / Rilis'.)

Eliott
sumber
7
1 untuk tip manajer konfigurasi. Saya sudah mencoba menyelesaikan masalah ini selama satu jam dan hanya itu.
Nick Sarabyn
Saya memiliki beberapa cabang solusi di TFS. Menghapus direktori bin dan obj di semua cabang yang diperiksa tampaknya menjernihkan semuanya.
sparebytes
dalam kasus saya, saya diubah solution platformsdari Any CPUmenjadi Mixed Platformkarena kesalahan !!! Saya mengubahnya kembali Any CPUdan berfungsi lagi.
vaheeds
Terima kasih, Solusi> Properti> Properti Konfigurasi> Konfigurasi, aplikasi konsol saya (yang menjalankan pengujian untuk aplikasi web di sln yang sama) tidak dicentang.
ampelas. Noel
23

Saya baru saja mengalami masalah yang sama ini, semua proyek saya berada dalam solusi yang sama sehingga mereka menggunakan referensi Proyek ke Proyek, jadi ketika satu diubah, yang lain seharusnya telah diperbarui. Namun bukan itu masalahnya, saya mencoba membangun, membangun kembali, menutup VS2010, menarik salinan baru dari kendali sumber kami. Semua ini tidak berhasil, yang akhirnya saya coba adalah mengklik kanan pada proyek dan membangun kembali setiap proyek satu per satu. Itu memperbarui file .dlls dan .pdb sehingga saya bisa men-debug.

Masalahnya di sini adalah bahwa file dll dan atau pdb Anda tidak sinkron.

Scott Dean
sumber
1
Anda tidak menyebutkan secara langsung, tetapi "bongkar proyek" (muat ulang lagi) berfungsi untuk saya, terima kasih.
javaLover
ini berhasil untuk saya:> Tidak ada yang berhasil, yang akhirnya saya coba adalah mengklik kanan pada proyek dan membangun kembali setiap proyek satu per satu. Itu memperbarui file .dlls dan .pdb sehingga saya bisa men-debug.
Khachatur
bongkar proyek (muat ulang lagi) dan publikasikan bit terbaru ke server web (IIS) yang berfungsi untuk saya.
Jason Tang
5

Ikuti langkah ini

  1. Hapus saja direktori bin dari proyek tempat DLL dibuat.
  2. Bangun kembali proyek.
  3. Hapus referensi dari proyek yang membuat referensi ke DLL.
  4. Cantumkan kembali referensinya.
  5. Nikmati.
Charles
sumber
4

Selain jawaban ini, saya memiliki masalah yang sama saat mengganti DLL baru dengan yang lama karena jalur yang salah. Jika Anda masih mendapatkan kesalahan ini, Anda mungkin tidak merujuk ke jalur yang salah untuk DLL. Buka manajer IIS dan klik situs web yang menggunakan DLL Anda. Di jendela kanan klik Pengaturan Lanjut dan masuk ke jalur folder Jalur Fisik di File Explorer dan pastikan bahwa Anda menggunakan folder ini untuk mengganti DLL Anda.

bbciao
sumber
4

Beberapa hal untuk Anda periksa:

Sudahkah Anda memeriksa ulang referensi proyek Anda?

Apakah Anda memiliki server web mulai Visual Studio masih berjalan? Periksa baki sistem dan cari halaman dengan ikon roda gigi (Anda mungkin memiliki lebih dari satu):

teks alt
(sumber: msdn.com )

Klik kanan dan tutup / keluar. Anda mungkin memiliki lebih dari satu. Bisakah Anda men-debug perubahan Anda sekarang?

Apakah Anda menjalankan versi debug tetapi hanya membuat versi rilis (atau sebaliknya)?

Apakah kompilasi benar-benar berhasil? Saya tahu saya telah mengklik "ada kesalahan, apakah Anda tetap ingin melanjutkan?" pesan beberapa kali tanpa disadari.

ChrisF
sumber
Kompilasi berhasil. Saya sedikit pemula dalam hal Visual Studio. Bagaimana cara memeriksa untuk mengetahui apakah saya menjalankan versi debug atau rilis?
frustratedcoder
1
@ Frustrasi - Saya hanya mencoba untuk menghilangkan yang sudah jelas. Untuk memeriksa apakah Anda sedang dalam rilis atau debug, periksa menu drop-down di samping ikon "debug" pada toolbar. Ini akan berupa "Debug" atau "Rilis".
ChrisF
Terima kasih. Itu mengatakan debug. Apa seharusnya begitu?
frustratedcoder
@ Frustasi - Ini awal yang baik;). Anda dapat "men-debug" kode rilis, tetapi tidak terlalu berguna - tetapi tidak relevan di sini. Ini berarti Anda sedang (atau setidaknya seharusnya) membangun dan menjalankan binari debug. Saya harus berpikir lebih banyak - tanpa benar-benar melihat masalahnya, agak sulit untuk mendiagnosisnya.
ChrisF
"Tanpa benar-benar melihat masalahnya, agak sulit untuk mendiagnosisnya," pikirku sebanyak itu. Saya sangat menghargai bantuannya
frustratedcoder
3

Dengan layanan web, masalah dapat disebabkan oleh penggunaan perintah Visual Studio "View in Browser". Ini menempatkan file DLL dan PDB layanan di folder bin dan obj. Saat masuk ke layanan web dari klien, entah bagaimana Visual Studio menggunakan PDB di folder bin (atau obj), tetapi menggunakan DLL di folder build keluaran proyek. Ada beberapa solusi:

  1. Coba hapus file DLL dan PDB di bin layanan web dan file obj.
  2. Coba klik "Lihat di Browser" di Visual Studio.

Jika Anda sebelumnya mendapatkan kesalahan ketidakcocokan file sumber, Visual Studio mungkin telah menambahkan nama file ke daftar hitam. Periksa properti solusi Anda. Pilih "Common Properties -> Debug Source Files" di sisi kiri kotak dialog. Jika file sumber layanan web Anda muncul di bidang "Jangan cari file sumber ini", hapuslah.

pengguna3233739
sumber
2

Saya baru saja mengalami masalah ini.

Saya mencoba semua hal di atas, tetapi hanya ini yang berhasil:

  • hapus file .pdb untuk solusinya.
  • hapus file .obj yang melanggar (untuk file yang dilaporkan tidak sinkron)

bangun solusinya.

Ini memperbaiki masalah untuk semua build yang bergerak maju untuk saya.

gollumullog.dll
sumber
Saya pikir menghapus file .pdb adalah kuncinya di sini. Ini terjadi pada saya karena saya telah menyalin file .pdb basi dari cabang lain.
Danzomida
1

Ini adalah bagaimana saya memperbaiki masalah di Visual Studio 2010:

1) Ubah opsi 'Konfigurasi Solusi' dari "Debug" menjadi "Rilis"

2) Mulai debugging

3) Hentikan debugging dan alihkan opsi 'Konfigurasi Solusi' kembali ke "Debug"

Ini berhasil untuk saya. Langkah 3 adalah opsional - ini berfungsi dengan baik ketika saya mengubahnya menjadi "Lepaskan" tetapi saya ingin mengubahnya kembali.

djmcghin.dll
sumber
1

Solusi saya:

Saya telah memasukkan proyek yang ada dari solusi berbeda dalam file solusi baru.

Saya tidak memperhatikan bahwa ketika proyek yang ada dibangun kembali, itu meletakkan hasil akhir ke dalam direktori keluaran solusi BARU. Saya memiliki jalur linker yang ditentukan untuk melihat ke direktori output solusi LAMA.

Mengalihkan proyek saya untuk mencari di direktori keluaran solusi baru memperbaiki masalah ini untuk saya.

Ben
sumber
1

Saya mengalami masalah ini, dan ternyata saya menjalankan aplikasi konsol saya sebagai aplikasi windows. Mengalihkan jenis keluaran kembali ke konsol memperbaiki masalah.

Eliezer Miron
sumber
1

Saya memiliki masalah yang sama. Untuk memperbaikinya saya menggunakan "Mode Rilis" untuk debug di VS2013. Yang cukup bagi saya, karena saya bekerja di node js \ c ++ addon.

jdscardoso.dll
sumber
1

Bongkar proyek yang memiliki file yang menyebabkan kesalahan.

Muat ulang proyek.

Tetap

Mike
sumber
1

Di Visual Studio 2017 menghapus folder .vs tersembunyi di memecahkan masalah ini untuk saya.

James Westgate
sumber
1

Masalah saya adalah saya memiliki dua proyek dalam solusi saya. Yang kedua adalah proyek uji yang digunakan untuk memanggil yang pertama. Saya telah memilih jalur ke referensi dari folder rilis folder bin.

Jadi, setiap kali saya membuat perubahan pada kode proyek pertama dan membuatnya kembali, itu akan memperbarui dll di folder debug tetapi proyek pemanggil menunjuk ke folder rilis, memberi saya kesalahan, "file sumber berbeda dari ketika modul dibangun."

Setelah saya menghapus referensi ke dll proyek utama di folder rilis dan mengaturnya ke dll di folder debug, masalahnya hilang.

Dalibor Bjelich
sumber
0

solusi: - masalahnya adalah: - jika beberapa proyek Anda dalam solusi, lihat beberapa proyek lain, maka kadang-kadang dll dari beberapa proyek, tidak akan diperbarui secara otomatis, setiap kali Anda membangun solusi, beberapa proyek akan memiliki dll membangun sebelumnya, bukan dll terbaru

Anda harus pergi secara manual dan menyalin dll dari proyek pembangunan terbaru ke dalam proyek referensi

pengguna2930560
sumber
0

Saya menggunakan Visual Studio 2013 dan saya memiliki proyek yang sudah ada di bawah kendali sumber.
Saya telah mengunduh salinan baru dari kendali sumber ke direktori baru.
Setelah melakukan perubahan pada salinan baru, saat membangun saya menerima kesalahan yang dimaksud.

Solusi saya:
1) Buka Documents\IISExpress\config\applicationhost.config
2) Perbarui virtualDirectorynode dengan direktori ke salinan baru dan simpan.

Pria Th4t
sumber
0

Masalah saya adalah bahwa saya memiliki layanan web dalam proyek tersebut dan saya mengubah jalur pembuatan.

Memulihkan jalur build default memecahkan masalah saya.

Boanerge
sumber
0

Saya memiliki masalah yang sama dan saya mengikuti sebagian besar panduan dalam jawaban lain yang diposting di sini, sepertinya tidak ada yang berhasil untuk saya.

Saya akhirnya membuka IIS dan mendaur ulang kumpulan aplikasi untuk aplikasi web saya. Saya memiliki IIS versi 8.5.9600, saya mengklik kanan aplikasi web saya, lalu: Deploy> Recycle> Recycle application pool> OK.

Tampaknya telah memperbaikinya, breakpoint sekarang tercapai seperti yang diharapkan. Saya pikir melakukan ini bersama dengan menghapus folder bin dan obj membantu situasi saya.

Semoga berhasil!

A. Murray
sumber
0

Saya tahu ini adalah pertanyaan lama tetapi saya baru saja mengalami masalah yang sama dan ingin memposting di sini seandainya itu membantu orang lain. Saya mendapatkan komputer baru dan bagian TI menggabungkan komputer lama saya dengan yang baru. Ketika saya mengatur TFS, saya memetakan jalur lokal yang berbeda dari yang saya gunakan sebelumnya, ke drive internal tambahan. Jalur lama masih ada dari data yang digabungkan di hard drive saya sehingga saya masih bisa membangun dan menjalankan. Jalur IIS saya juga mengarah ke direktori lama. Setelah saya memperbarui IIS ke jalur yang benar, saya dapat melakukan debug dengan baik. Saya juga menghapus direktori lama untuk kebaikan.

mslissap.dll
sumber
0

Saya juga mengalaminya. Saya hanya membuka folder obj pada proyek dan kemudian membuka folder debug, hapus file .pdb dan itu saja.

pengguna5912760
sumber
0

Kesalahan ini juga terjadi jika Anda mencoba membuat perubahan pada file sumber yang bukan bagian dari proyek.

Saya sedang men-debug metode dari .dll dari salah satu proyek saya yang lain, di mana Visual Studio telah cukup membantu memuat sumber karena .dll telah dibangun pada mesin yang sama dan mengetahui jalur ke sumber. Jelas, mengubah file seperti itu tidak akan melakukan apa pun kecuali Anda membangun kembali proyek yang direferensikan.

Dan Bechard
sumber
0
  1. Hapus semua breakpoint.
  2. Membangun kembali.
  3. Selesai
Jaja
sumber
0

Di Visual Studio 2015, menggunakan C ++, apa yang memperbaiki the source file is different from when the module was builtmasalahnya adalah

  • mulai ulang Visual Studio.
Pedro Reis
sumber
0

Debug-> mulai tanpa debugging.

Opsi ini berhasil untuk saya. Semoga ini membantu!

Madhurya Gandi
sumber
0

Periksa apakah lokasi yang Anda tunjuk menggunakan mex () di Matlab sudah benar (berisi file lib dan obj yang dimodifikasi hingga tanggal terakhir Anda menyusun perpustakaan di Visual studio).

Jika tidak demikian:

Pastikan Anda sedang mengompilasi Visual studio dalam mode yang menyimpan file .lib:

  1. properti -> Properti konfigurasi -> Umum -> Jenis konfigurasi -> perpustakaan statis

  2. properties -> Config properties -> General -> Target extension = .lib (bukan exe)

Pastikan direktori keluaran dan perantara cocok dengan direktori Matlab di

  1. properti -> Properti konfigurasi -> Umum -> Direktori keluaran
  2. properti -> Properti konfigurasi -> Umum -> Direktori perantara
lahmania
sumber
0

Dalam kasus saya, jawaban @ Eliott tidak berfungsi. Untuk mengatasi masalah ini saya telah Mengecualikan / Menyertakan Dari Proyek file saya yang kurang, dan juga Membersihkan dan Membangun kembali solusinya.

Setelah tindakan ini, file saya dengan modifikasi terakhir saya dan debugger dipulihkan.

Saya berharap bantuan ini.

Obiwan Kenobi
sumber
0

Saya mendapatkan masalah ini saat debugging kadang-kadang w / Visual Studio tetapi ketika aplikasi dilayani oleh IIS . (kami harus mengembangkan dalam formulir ini karena beberapa alasan rumit yang berkaitan dengan cara pengembang asli menyiapkan proyek ini.)

Ketika saya mengubah file dan membangun kembali , itu sering kali memperbaikinya. Saya tahu kedengarannya konyol, tetapi saya hanya mencoba men-debug beberapa kode untuk mengetahui mengapa kode melakukan sesuatu yang aneh padahal saya tidak mengubahnya untuk beberapa lama, dan saya mencoba lusinan hal dari halaman ini, tetapi diperbaiki hanya dengan mengubahnya berkas..

Chase Anderson
sumber