Pembaruan: Proyek sampel yang mereproduksi bug ini dapat ditemukan di sini di Microsoft Connect . Saya juga telah menguji dan memverifikasi bahwa solusi yang diberikan dalam jawaban yang diterima di bawah ini berfungsi pada proyek sampel itu. Jika solusi ini tidak berhasil untuk Anda, Anda mungkin memiliki masalah yang berbeda (yang termasuk dalam pertanyaan terpisah).
Ini adalah pertanyaan yang diajukan sebelumnya, baik di sini di Stack Overflow dan tempat-tempat lain, tetapi tidak ada saran yang saya temukan sejauh ini yang membantu saya, jadi saya hanya perlu mencoba mengajukan pertanyaan baru.
Skenario: Saya memiliki aplikasi Windows Forms yang sederhana (C #, .NET 4.0, Visual Studio 2010). Ini memiliki beberapa bentuk dasar yang sebagian besar bentuk lain dari, menggunakan Kerangka Entitas (dan kelas POCO) untuk akses database. Tidak ada yang mewah, tidak ada multi-threading atau apapun.
Masalah: Semua baik-baik saja untuk sementara waktu. Kemudian, tiba-tiba, Visual Studio gagal membangun ketika saya akan meluncurkan aplikasi. Saya mendapat peringatan "Tidak dapat menghapus file '... bin \ Debug \ [ProjectName] .exe'. Akses ke path '... bin \ Debug \ [ProjectName] .exe' ditolak." dan kesalahan "Tidak dapat menyalin file 'obj \ x86 \ Debug \ [ProjectName] .exe' ke 'bin \ Debug \ [ProjectName] .exe'. Proses tidak dapat mengakses file 'bin \ Debug \ [ProjectName] .exe 'Karena sedang digunakan oleh proses lain. " (Saya mendapatkan peringatan dan kesalahan saat menjalankan Rebuild, tetapi hanya kesalahan saat menjalankan Build - tidakkah itu relevan?)
Saya mengerti betul apa yang dikatakan pesan peringatan dan kesalahan: Visual Studio jelas mencoba menimpa file-exe sementara itu waktu yang sama memiliki kunci di atasnya untuk beberapa alasan. Namun, ini tidak membantu saya menemukan solusi untuk masalah ini ... Satu-satunya hal yang saya temukan berfungsi adalah mematikan Visual Studio dan memulainya lagi. Membangun dan meluncurkan kemudian berfungsi, sampai saya membuat perubahan dalam beberapa bentuk, maka saya memiliki masalah yang sama lagi dan harus memulai kembali ... Cukup frustasi!
Seperti yang saya sebutkan di atas, ini tampaknya menjadi masalah yang diketahui, jadi ada banyak solusi yang disarankan. Saya hanya akan daftar apa yang sudah saya coba di sini, sehingga orang tahu apa yang harus dilewati:
- Membuat solusi bersih baru dan hanya menyalin file dari solusi lama.
Menambahkan hal berikut ke yang berikut ke acara pra-bangun proyek:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Menambahkan berikut ini ke properti proyek (file .csproj):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Namun, tidak ada yang bekerja untuk saya, jadi Anda mungkin bisa melihat mengapa saya mulai merasa sedikit frustrasi. Saya tidak tahu harus mencari ke mana lagi, jadi saya berharap ada yang punya sesuatu untuk diberikan kepada saya! Apakah ini bug di VS, dan jika demikian apakah ada patch? Atau apakah saya melakukan sesuatu yang salah, apakah saya memiliki referensi melingkar atau serupa, dan jika demikian bagaimana saya bisa mengetahuinya?
Setiap saran sangat dihargai :)
Pembaruan: Seperti yang disebutkan dalam komentar di bawah, saya juga telah memeriksa menggunakan Process Explorer yang sebenarnya adalah Visual Studio yang mengunci file.