Saya memiliki masalah yang sangat mirip dengan yang dijelaskan di sini .
Saya juga memutakhirkan solusi campuran proyek C ++ / CLI dan C # dari Visual Studio 2008 ke Visual Studio 2010. Dan sekarang di Visual Studio 2010 satu proyek C ++ / CLI selalu kedaluwarsa.
Bahkan jika itu telah dikompilasi dan ditautkan tepat sebelum dan F5 dipukul, kotak pesan "Proyek ini ketinggalan zaman. Apakah Anda ingin membangunnya?" muncul. Ini sangat menjengkelkan karena file DLL sangat bertingkat rendah dan memaksa hampir semua proyek solusi untuk membangun kembali.
Pengaturan pdb saya disetel ke nilai default ( solusi yang disarankan untuk masalah ini ).
Apakah mungkin mendapatkan alasan mengapa Visual Studio 2010 memaksa membangun kembali atau menganggap suatu proyek sudah mutakhir?
Ada ide lain mengapa Visual Studio 2010 berperilaku seperti itu?
sumber
Jawaban:
Hanya untuk Visual Studio / Express 2010. Lihat jawaban (lebih mudah) lainnya untuk VS2012, VS2013, dll
Untuk menemukan file yang hilang , gunakan info dari artikel Aktifkan C ++ log sistem proyek untuk mengaktifkan debug logging di Visual Studio dan biarkan hanya memberi tahu Anda apa yang menyebabkan pembangunan kembali:
devenv.exe.config
file (ditemukan dalam%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\
atau dalam%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\
). Untuk versi Express file konfigurasi diberi namaV*Express.exe.config
.Tambahkan berikut ini setelah
</configSections>
baris:Cari log debug untuk setiap baris formulir:
(Saya baru saja menekan Ctrl + F dan mencari
not up to date
) Ini akan menjadi referensi yang menyebabkan proyek menjadi "ketinggalan zaman".Untuk memperbaikinya, hapus referensi apa pun ke file yang hilang dari proyek Anda, atau perbarui referensi untuk menunjukkan lokasi sebenarnya.
Catatan: Jika menggunakan 2012 atau lebih baru maka snippet seharusnya:
sumber
Di Visual Studio 2012 saya bisa mencapai hasil yang sama lebih mudah daripada di solusi yang diterima.
Saya mengubah opsi di menu Alat → Pilihan → Proyek dan Solusi → Bangun dan Jalankan → * Proyek MSBuild membangun verbositas keluaran "dari Minimal ke Diagnostic .
Kemudian pada output build saya menemukan baris yang sama dengan mencari "tidak up to date":
sumber
1>Project not up to date because build input 'C:\...\ReadMe.txt' is missing.
: O !!?!was modified at
dalam mode diagnostik karena saya tidak punyanot up to date
keluaran.Ini terjadi pada saya hari ini. Saya dapat melacak penyebabnya: Proyek ini menyertakan file header yang tidak lagi ada di disk.
Menghapus file dari proyek menyelesaikan masalah.
sumber
Kami juga mengalami masalah ini dan menemukan cara mengatasinya.
Masalahnya adalah seperti yang dinyatakan di atas "File tidak lagi ada di disk."
Ini tidak sepenuhnya benar. File memang ada pada disk, tetapi file .VCPROJ merujuk file di tempat lain.
Anda dapat 'menemukan' ini dengan masuk ke "sertakan tampilan file" dan mengklik setiap file sertakan pada gilirannya sampai Anda menemukan yang tidak dapat ditemukan oleh Visual Studio. Anda kemudian MENAMBAH file itu (sebagai item yang ada) dan menghapus referensi yang tidak dapat ditemukan dan semuanya OK.
Pertanyaan yang valid adalah: Bagaimana Visual Studio bahkan membangun jika tidak tahu di mana file yang disertakan?
Kami pikir file .vcproj memiliki beberapa jalur relatif ke file yang menyinggung di suatu tempat yang tidak ditampilkan di Visual Studio GUI, dan ini menjelaskan mengapa proyek benar-benar akan membangun meskipun tampilan pohon dari menyertakan tidak benar.
sumber
Jawaban yang diterima membantu saya di jalan yang benar untuk mencari tahu bagaimana menyelesaikan masalah ini untuk proyek yang kacau saya harus mulai bekerja dengan. Namun, saya harus berurusan dengan sejumlah besar header termasuk yang buruk. Dengan output debug verbose, menghapus satu menyebabkan IDE membeku selama 30 detik saat mengeluarkan debug memuntahkan, yang membuat proses berjalan sangat lambat.
Saya menjadi tidak sabar dan menulis skrip Python cepat-dan-kotor untuk memeriksa file proyek (Visual Studio 2010) untuk saya dan menampilkan semua file yang hilang sekaligus, bersama dengan filter tempat mereka berada. Anda dapat menemukannya sebagai Inti di sini: https://gist.github.com/antiuniverse/3825678 (atau garpu ini yang mendukung jalur relatif )
Contoh:
Kode sumber:
sumber
Saya telah menghapus cpp dan beberapa file header dari solusi (dan dari disk) tetapi masih memiliki masalah.
Masalahnya, setiap file yang digunakan kompiler masuk dalam file * .tlog di direktori temp Anda. Ketika Anda menghapus file, file * .tlog ini tidak diperbarui. Itu file yang digunakan oleh incremental build untuk memeriksa apakah proyek Anda mutakhir.
Edit file .tlog ini secara manual atau bersihkan proyek Anda dan bangun kembali.
sumber
Saya memiliki masalah yang sama, tetapi dalam kasus saya tidak ada file yang hilang, ada kesalahan dalam bagaimana file output pdb didefinisikan: Saya lupa akhiran .pdb (saya menemukan dengan trik debug logging).
Untuk mengatasi masalah yang saya ubah, dalam file vxproj, baris berikut:
untuk
sumber
Saya memiliki masalah ini di VS2013 (Pembaruan 5) dan ada dua alasan untuk itu, keduanya dapat Anda temukan dengan mengaktifkan "Detail" build output di bawah "Tools" -> "Projects and Solutions" -> "Build and Run" .
"Forcing recompile of all source files due to missing PDB "..."
Ini terjadi ketika Anda menonaktifkan keluaran informasi debug di opsi kompiler Anda (Di bawah Pengaturan proyek: "C / C ++" -> "Format Informasi Debug" ke "Tidak" dan "Linker" -> "Hasilkan Info Debug" ke "Tidak":) . Jika Anda telah meninggalkan "C / C ++" -> "Program Database File Name" di default (yaitu "$ (IntDir) vc $ (PlatformToolsetVersion) .pdb"), VS tidak akan menemukan file karena bug ( https : //connect.microsoft.com/VisualStudio/feedback/details/833494/project-web-debug-information-disabled-always-rebuilds ).
Untuk memperbaikinya, cukup hapus nama file ke "" (bidang kosong).
"Forcing rebuild of all source files due to a change in the command line since the last build."
Ini tampaknya juga merupakan bug VS yang dikenal ( https://connect.microsoft.com/VisualStudio/feedback/details/833943/forcing-rebuild-of-all-source-files-due-to-a-change-in- the-command-line-since-the-last-build ) dan tampaknya diperbaiki di versi yang lebih baru (tetapi tidak VS2013). Saya tahu tidak ada solusi, tetapi jika Anda melakukannya, tentu saja, posting di sini.
sumber
Saya tidak tahu apakah ada orang lain yang memiliki masalah yang sama, tetapi properti proyek saya telah
"Configuration Properties" -> C/C++ -> "Debug Information Format"
diatur ke "Tidak Ada", dan ketika saya mengubahnya kembali ke "Program Database (/ Zi)" default, yang menghentikan proyek dari kompilasi ulang setiap kali .sumber
Solusi sederhana lain yang dirujuk oleh Visual Studio Forum .
Mengubah konfigurasi: menu Alat → Pilihan → Proyek dan Solusi → VC ++ Pengaturan Proyek → Mode Solusi Explorer untuk Tampilkan semua file .
Kemudian Anda dapat melihat semua file di Solution Explorer.
Temukan file yang ditandai oleh ikon kuning dan hapus dari proyek.
Tidak apa-apa.
sumber
Visual Studio 2013 - "Memaksa kompilasi ulang semua file sumber karena PDB hilang". Saya mengaktifkan output build terperinci untuk menemukan masalah: Saya mengaktifkan output build "Detail" di bawah "Tools" → "Projects and Solutions" → "Build and Run".
Saya punya beberapa proyek, semua C ++, saya mengatur opsi di bawah pengaturan proyek: (C / C ++ → Format Informasi Debug) ke Program Database (/ Zi) untuk proyek masalah. Namun, ini tidak menghentikan masalah untuk proyek itu. Masalahnya berasal dari salah satu proyek C ++ lainnya dalam solusi.
Saya mengatur semua proyek C ++ ke "Program Database (/ Zi)". Ini memperbaiki masalah.
Sekali lagi, proyek yang melaporkan masalah bukanlah proyek yang bermasalah. Coba atur semua proyek ke "Program Database (/ Zi)" untuk memperbaiki masalah.
sumber
Saya bertemu masalah ini hari ini, namun itu sedikit berbeda. Saya punya proyek DLL CUDA dalam solusi saya. Mengkompilasi dalam solusi bersih adalah OK, tetapi sebaliknya gagal dan kompiler selalu menganggap proyek CUDA DLL tidak up to date.
Saya mencoba solusinya dari posting ini .
Tetapi tidak ada file header yang hilang dalam solusi saya. Kemudian saya menemukan alasan dalam kasus saya.
Saya telah mengubah Direktori Intermediate proyek sebelumnya, meskipun tidak menimbulkan masalah. Dan sekarang ketika saya mengubah Direktori Intermediate Project CUDA DLL kembali ke $ (Konfigurasi) \, semuanya berfungsi dengan baik lagi.
Saya kira ada beberapa masalah kecil antara Kustomisasi CUDA Build dan Direktori Menengah non-standar.
sumber
Saya memiliki masalah yang sama dan mengikuti instruksi di atas (jawaban yang diterima) untuk mencari file yang hilang, tetapi tidak tanpa menggaruk kepala saya. Berikut ini ringkasan saya tentang apa yang saya lakukan. Agar lebih akurat, ini bukan file yang hilang karena tidak diperlukan oleh proyek untuk membangun (setidaknya dalam kasus saya), tetapi mereka adalah referensi ke file yang tidak ada pada disk yang sebenarnya tidak diperlukan.
Inilah kisah saya:
Di bawah Windows 7 file tersebut berada di
%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\%
. Ada dua file serupadevenv.exe.config.config
dandevenv.exe.config
. Anda ingin mengubahnya nanti.Di bawah Windows 7, Anda tidak memiliki izin untuk mengedit file ini dalam file program. Cukup salin di tempat lain (desktop) ubah dan salin kembali ke lokasi file program.
Saya mencoba mencari cara menghubungkan DebugView ke IDE untuk melihat file yang hilang. Anda tidak perlu melakukan apa pun. Jalankan saja, dan itu akan menangkap semua pesan. Pastikan
Capture Events
opsi menu dipilih dalamCapture
menu yang secara default harus dipilih.DebugView TIDAK akan menampilkan semua file yang hilang sekaligus (setidaknya bukan untuk saya)! Anda akan menjalankan DebugView dan menjalankan proyek di Visual Studio 2010. Ini akan meminta
project out of date
pesan, pilih Ya untuk membangun dan DebugView akan menampilkan file pertama yang hilang atau menyebabkan pembangunan kembali. Buka file proyek (bukan file solusi) di Notepad dan cari file itu dan hapus. Anda lebih baik menutup proyek Anda dan membukanya kembali saat melakukan penghapusan ini. Ulangi proses ini sampai DebugView tidak lagi menampilkan file yang hilang.Agak membantu mengatur filter pesan agar tidak diperbarui dari tombol bilah alat DebugView atau Edit → opsi Filter / Sorot . Dengan begitu, satu-satunya pesan yang ditampilkan adalah pesan yang memiliki string `tidak terkini 'di dalamnya.
Saya punya banyak file yang tidak perlu referensi dan menghapusnya semua memperbaiki masalah mengikuti langkah-langkah di atas.
Cara kedua untuk menemukan semua file yang hilang sekaligus
Ada cara kedua untuk menemukan file-file ini sekaligus, tetapi melibatkan (a) kontrol sumber dan (b) integrasi dengan Visual Studio 2010. Menggunakan Visual Studio 2010 , tambahkan proyek Anda ke lokasi yang diinginkan atau lokasi boneka di sumber. kontrol. Ini akan mencoba untuk menambahkan semua file, termasuk yang tidak ada pada disk juga tetapi dirujuk dalam file proyek. Buka perangkat lunak kontrol sumber Anda seperti Perforce , dan itu harus menandai file-file ini yang tidak ada pada disk dalam skema warna yang berbeda. Perforce menunjukkan mereka dengan kunci hitam. Ini adalah referensi Anda yang hilang. Sekarang Anda memiliki daftar semuanya, dan Anda dapat menghapus semuanya dari file proyek Anda menggunakan Notepad dan proyek Anda tidak akan mengeluh karena ketinggalan zaman .
sumber
Bagi saya itu adalah keberadaan file header yang tidak ada di "File Header" di dalam proyek. Setelah menghapus entri ini (klik kanan> Kecualikan dari Proyek) pertama kali dikompilasi ulang, lalu langsung
========== Bangun: 0 berhasil, 0 gagal, 5 terbaru, 0 dilewati ==========
dan tidak ada upaya membangun kembali tanpa modifikasi dilakukan. Saya pikir ini adalah check-before-build yang diimplementasikan oleh VS2010 (tidak yakin jika didokumentasikan, bisa jadi) yang memicu bendera "AlwaysCreate".
sumber
Jika Anda menggunakan perintah MSBuild baris perintah (bukan Visual Studio IDE), misalnya jika Anda menargetkan AppVeyor atau Anda lebih suka baris perintah, Anda bisa menambahkan opsi ini ke baris perintah MSBuild Anda:
Seperti yang didokumentasikan di sini (peringatan: verbosity MSDN biasa). Ketika build selesai, cari string
will be compiled
dalam file log yang dibuat selama buildMyLog.log
,.sumber
Saya menggunakan Visual Studio 2013 Professional dengan Pembaruan 4 tetapi tidak menemukan resolusi dengan saran lainnya, namun, saya berhasil menyelesaikan masalah untuk proyek Tim saya.
Inilah yang saya lakukan untuk menyebabkan masalah -
Inilah yang saya lakukan untuk menyelesaikan masalah -
Jika ini masalahnya, pastikan saja Anda menghapus file phantom daripada file yang sebenarnya ingin Anda simpan dalam proyek.
sumber
Saya punya masalah ini dan menemukan ini:
http://curlybrace.blogspot.com/2005/11/visual-c-project-continually-out-of.html
sumber
Dalam kasus saya, salah satu proyek berisi banyak file IDL. Kompiler MIDL menghasilkan file data DLL yang disebut 'dlldata.c' untuk masing-masing, terlepas dari nama file IDL. Ini menyebabkan Visual Studio untuk mengkompilasi file IDL pada setiap build, bahkan tanpa perubahan pada file IDL.
Solusinya adalah mengonfigurasi file output unik untuk setiap file IDL (kompiler MIDL selalu menghasilkan file seperti itu, bahkan jika / dlldata switch dihilangkan):
sumber
Saya menghabiskan berjam-jam menghabiskan merobek rambut saya atas ini. Output build tidak konsisten; proyek yang berbeda akan "tidak terkini" dengan alasan berbeda dari satu bangunan ke bangunan berikutnya berturut-turut. Saya akhirnya menemukan bahwa pelakunya adalah DropBox (3.0.4). Saya menyambungkan folder sumber saya dari ... \ DropBox ke folder proyek saya (tidak yakin apakah ini alasannya), tetapi DropBox entah bagaimana "menyentuh" file saat membangun. Penyinkronan dijeda dan semuanya selalu terbarui.
sumber
Ada beberapa alasan potensial dan - seperti yang dicatat - Anda harus mendiagnosisnya terlebih dahulu dengan mengatur verbosity MSBuild ke 'Diagnostic'. Sebagian besar alasan yang dinyatakan akan cukup jelas dan Anda dapat segera menindaklanjutinya, TETAPI sesekali MSBuild keliru mengklaim bahwa beberapa file dimodifikasi dan perlu disalin.
Jika demikian, Anda harus menonaktifkan tunnel NTFS atau menduplikasi folder output Anda ke lokasi baru. Ini dia dengan lebih banyak kata.
sumber
Ini terjadi pada saya beberapa kali dan kemudian pergi, sebelum saya tahu mengapa. Dalam kasus saya itu adalah:
Waktu sistem salah dalam pengaturan dual boot!
Ternyata, dual boot saya dengan Ubuntu adalah penyebab utama !! Saya terlalu malas untuk memperbaiki Ubuntu untuk berhenti mengacaukan jam perangkat keras saya. Ketika saya masuk ke Ubuntu, waktu melonjak 5 jam ke depan.
Karena nasib buruk, saya membangun proyek sekali, dengan waktu sistem yang salah, lalu mengoreksi waktu. Akibatnya, semua file build memiliki cap waktu yang salah, dan VS akan berpikir mereka semua sudah ketinggalan zaman dan akan membangun kembali proyek.
sumber
Sebagian besar sistem build menggunakan stempel waktu data untuk menentukan kapan pembangunan kembali harus terjadi - cap tanggal / waktu dari setiap file keluaran diperiksa terhadap waktu modifikasi terakhir dari dependensi - jika ada dependensi yang lebih segar, maka target dibangun kembali.
Ini dapat menyebabkan masalah jika salah satu dari dependensi entah bagaimana mendapatkan cap waktu data yang tidak valid karena sulit untuk cap waktu dari setiap output membangun untuk pernah melebihi timestamp dari file yang seharusnya dibuat di masa depan: P
sumber
Bagi saya, masalah muncul dalam proyek WPF di mana beberapa file memiliki properti 'Build Action' mereka diatur ke 'Resource' dan 'Salin ke Direktori Output' diatur ke 'Salin jika lebih baru'. Solusinya adalah mengubah properti 'Salin ke Direktori Output' menjadi 'Jangan salin'.
msbuild tahu untuk tidak menyalin file 'Sumber Daya' ke output - tetapi masih memicu membangun jika mereka tidak ada di sana. Mungkin itu bisa dianggap bug?
Ini sangat membantu dengan jawaban di sini mengisyaratkan bagaimana membuat msbuild menumpahkan kacang pada mengapa ia terus membangun semuanya!
sumber
Jika Anda mengubah argumen Perintah Debugging untuk proyek, ini juga akan memicu pesan proyek perlu dibangun kembali. Meskipun target itu sendiri tidak dipengaruhi oleh argumen Debugging, properti proyek telah berubah. Jika Anda membangun kembali, pesannya akan hilang.
sumber
Saya memiliki masalah serupa dengan Visual Studio 2005, dan solusi saya terdiri dari lima proyek dalam ketergantungan berikut (pertama dibangun di atas):
Saya menemukan bahwa proyek Video_Codec ingin membangun penuh bahkan setelah bersih lalu membangun kembali solusi.
Saya memperbaikinya dengan memastikan
pdb
file output dari C / C ++ dan linker cocok dengan lokasi yang digunakan oleh proyek kerja lainnya. Saya juga mengaktifkan RTTI.sumber
Satu lagi di Visual Studio 2015 SP3, tetapi saya telah mengalami masalah serupa di Visual Studio 2013 beberapa tahun yang lalu.
Masalah saya adalah entah bagaimana file cpp yang salah digunakan untuk header yang sudah dikompilasi (jadi saya punya dua file cpp yang membuat header yang sudah dikompilasi). Sekarang mengapa Visual Studio mengubah bendera pada cpp yang salah untuk 'membuat header yang dikompilasi' tanpa permintaan saya, saya tidak tahu, tapi itu bisa terjadi ... mungkin beberapa plugin atau sesuatu ???
Bagaimanapun, file cpp yang salah menyertakan file version.h yang diubah pada setiap build. Jadi Visual Studio membangun kembali semua tajuk dan karena itu seluruh proyek.
Nah, sekarang sudah kembali ke perilaku normal.
sumber
Saya punya proyek VC ++ yang selalu mengkompilasi semua file dan sebelumnya telah ditingkatkan dari VS2005 ke VS2010 (oleh orang lain). Saya menemukan bahwa semua file cpp dalam proyek kecuali StdAfx.cpp diatur ke Buat (/ Yc) header yang dikompilasi. Saya mengubah ini sehingga hanya StdAfx.cpp yang diatur untuk membuat header yang telah dikompilasi dan sisanya ditetapkan untuk Menggunakan (/ Yu) header yang sudah dikompilasi dan ini memperbaiki masalah bagi saya.
sumber
Saya menggunakan Visual Studio 2013 dan baru saja memperbarui ke pembaruan Windows 10 Mei 2019 dan kompilasi tiba-tiba harus diulang setiap kali, terlepas dari perubahan. Mencoba mengganti nama pch ke ProjectName alih-alih TargetName, mencari file yang hilang dengan log terperinci dan skrip Python itu, tetapi pada akhirnya saatnya saya tidak disinkronkan dengan server MS (seperti milidetik).
Apa yang memutuskan ini untuk saya adalah
Sekarang proyek saya tidak perlu dikompilasi ulang tanpa alasan.
sumber
Saya pikir Anda menempatkan beberapa baris baru atau spasi putih lainnya. Hapus dan tekan F5 lagi.
sumber
Proyek .NET selalu dikompilasi ulang terlepas. Bagian dari ini adalah menjaga agar IDE tetap mutakhir (seperti IntelliSense). Saya ingat menanyakan pertanyaan ini di forum Microsoft tahun yang lalu, dan ini adalah jawaban yang saya berikan.
sumber