Saya punya webforms
aplikasi C # , yang sampai hari ini bekerja dengan lancar.
Sekarang hari ini, tiba-tiba, setiap kali saya mencoba menjalankan aplikasi, saya mendapatkan kesalahan penguncian file:
Tidak dapat menyalin file "obj \ Debug \ MyProject.exe" ke "bin \ Debug \ MyProject.exe". Proses tidak dapat mengakses file "bin \ Debug \ MyProject.exe" karena sedang digunakan oleh proses lain.
Googling kesalahan tidak menghasilkan apa pun di luar yang sudah jelas, yaitu VS mengira file tersebut terkunci. Dan jelas Visual Studio sendiri yang mengunci file, karena ketika saya menutup VS dan membukanya kembali, proyek dijalankan dengan baik - pertama kali. Ketika saya mencoba menjalankannya untuk kedua kalinya, saya mendapatkan kesalahan penguncian file.
Menutup VS dan membuka kembali setiap kali saya ingin menjalankan aplikasi bukanlah solusi yang layak! Bagaimana cara mengetahui apa yang mengunci file, dan menghentikannya agar tidak terkunci?
EDIT: Penemuan menarik lainnya: Saya bahkan tidak perlu menjalankan aplikasi. Hanya mengkompilasinya sekali menyebabkan penguncian file; Saya tidak bisa mengkompilasi dua kali berturut-turut!
Masalah ini khusus untuk satu proyek dalam solusi saya. Semua proyek lainnya berfungsi dengan baik dan dapat dijalankan sesering yang saya suka. Hanya satu proyek ini yang terkunci sendiri.
sumber
Jawaban:
Saya telah menemukan solusi sederhana yang cocok untuk saya. Ini berjalan seperti ini:
Saat masalah terjadi, ubah saja konfigurasi gedung di bagian atas (jika di "Rilis" menjadi "Debug" dan sebaliknya), buat lalu ubah kembali ke konfigurasi sebelumnya dan buat lagi.
Saya kira mengubah konfigurasi melepaskan vcshost dan devenv.
sumber
Nah, saya memecahkan masalahnya sendiri - meskipun saya masih tidak tahu mengapa. Saya memutuskan untuk mengisolasi masalah dengan menghapus semua file dari proyek, kemudian menambahkannya kembali dan menentukan dengan cara itu file mana yang menjadi sumber masalah saya. Jadi, satu per satu saya memperkenalkan kembali file ke proyek, menyusun & membersihkan setiap langkah ... sampai ... saya menambahkan yang terakhir ...
... dan semuanya masih berfungsi dengan baik.
Saya melakukan perbandingan dengan kontrol sumber dari .csproj asli saya; tidak ada perbedaan nyata. Dan bahkan ketika saya mencoba kembali ke versi sebelumnya dari .csproj, itu masih berfungsi.
Sihir hitam. Jika berhasil, terkadang lebih baik tidak bertanya mengapa - terima saja dan lanjutkan ...
EDIT: Masalahnya adalah masalah yang berulang, dan saya yakin saya telah mengisolasinya ketika saya memiliki desainer formulir terbuka dari bentuk abstrak / generik pada waktu kompilasi.
Hal yang dipelajari: Pastikan Desainer Formulir dari setiap formulir atau kontrol abstrak atau generik ditutup sebelum Anda mengompilasi! Jika tidak, Anda harus menutup VS dan membuka kembali!
sumber
Apa yang kami temukan di sini, adalah sebagai berikut: Di halaman properti proyek, tab Debug, hapus centang pada "Aktifkan proses hosting studio visual". Saya tidak yakin untuk apa properti ini, tetapi berfungsi setelah tidak dicentang.
sumber
Sebenarnya Anda harus mencentang "Aktifkan proses hosting Visual Studio". Setidaknya untuk VS2010. Dan saya juga punya:
jika ada "$ (TargetPath) .locked" del "$ (TargetPath) .locked" jika ada "$ (TargetPath)" jika tidak ada "$ (TargetPath) .locked" move "$ (TargetPath)" "$ (TargetPath) .terkunci"
dalam opsi pra-bangun. Masalah ini telah menghantui saya untuk waktu yang sangat lama dan baru setelah John W. menyebutkan kotak centang ini, saya bahkan memperhatikan bahwa itu ada dan rendah dan lihatlah itu sudah tidak dicentang.
Perhatikan juga bahwa -app-vshost.exe berjalan di latar belakang meskipun tidak sedang di-debug. Itulah yang membuatnya berhasil dibangun dan dijalankan setiap kali saya kira. Itu tidak berjalan sebelumnya. Dan saya juga mencoba membersihkan folder debug dan rilis serta mengubah jenis target secara konstan dan tidak ada yang berhasil kecuali seperti yang dijelaskan di atas. Solusi saya sebelumnya adalah hanya menunggu 5 menit di antara build, yang menjadi sangat menjengkelkan dan memakan waktu untuk menyelesaikan apa pun. Saya belum melihat perubahan apa pun dalam perilaku di mana itu penting tab mana yang terbuka atau bentuk XNA vs windows atau desainer yang dibuka. Masalah ini terjadi pada build 32-bit atau 64-bit dan tidak masalah jika saya mematikan aplikasi dengan ALT-F4 atau mematikannya dengan pengelola tugas, yang, secara teori, tidak mengizinkan aplikasi untuk menutup atau melepaskan sumber daya. Awalnya saya pikir itu masalah pengumpulan sampah.
sumber
VS2017 - Dipecahkan dengan menutup semua contoh MSBuild.exe di pengelola tugas windows
sumber
Sedikit terlambat untuk menjawab, tetapi saya menyelesaikan ini dengan membuka properti proyek> tab "Debug"> hapus centang "Aktifkan proses hosting Visual Studio".
sumber
Saya telah mengatasi masalah ini dengan mengganti nama file yang terkunci (menggunakan Windows Explorer). Saya tidak diizinkan untuk menghapus file, tetapi mengganti nama file yang terkunci berfungsi!
sumber
Saya menyelesaikan ini dengan menghapus folder bin \ Debug dan, mungkin, memulai ulang VS
sumber
Bagi saya, itu adalah Layanan Windows yang diinstal dan dijalankan. Setelah saya menghentikannya, pembuatannya berhasil.
sumber
Jalankan perintah ini dari kotak Run:
lalu
bekerja untuk saya. vs 2003
sumber
Baru-baru ini mengalami masalah ini ketika mencoba membangun solusi yang sedang saya kerjakan (bukan hanya proyek winforms).
Selain
build
kegagalan, saya perhatikan bahwa proyek pembersihan akan gagal secara diam-diam (memeriksa folder bin menunjukkan bahwa file tidak benar-benar dihapus) dan menutup Visual Studio tidak mengakhiridevenv
proses - sebaliknya, menyebabkan crash. Proses pemulihan Windows kemudian akan memulai ulang Visual Studio.Setelah beberapa kali coba-coba, saya menemukan masalah hanya terjadi pada saya ketika saya membuka solusi dari menu "Terbaru" saat memulai VS.
Membuka solusi dari
File >> Open >> Project/Solution
menemukannya berfungsi seperti biasanya.Saat ini tidak tahu mengapa - akan terus mencari ini tetapi untuk saat ini, setidaknya saya bisa bekerja!
sumber
Cukup periksa referensi dan hapus referensi mandiri ke proyek.
Penjelasan: Masalah saya dimulai setelah membuat kontrol khusus dan seret dan lepas ke palet kotak alat untuk digunakan dalam bentuk desain. Pertama muncul peringatan yang mengatakan bahwa ada redundansi antara file sumber kontrol khusus (.cs) dan proyek yang dapat dieksekusi (.exe). Saat menjalankan / debugging muncul kesalahan: tidak dapat mengakses (.exe) karena sedang digunakan (dan itu benar).
Saya benar-benar menghapus seluruh kode sumber mengenai kontrol kustom dan masalah tetap ada, sampai saya memeriksa referensi dan mereferensikan dirinya sendiri agar "bisa" mendapatkan kontrol kustom sebelumnya. Saya menghapus referensi dan selesai !!
sumber
Saya memiliki masalah yang sama pada aplikasi Xamarin saya di studio visual dan itu diselesaikan dengan mencabut perangkat seluler uji saya. Aplikasi ditutup dan debugger dihentikan tetapi kesalahan masih terjadi saat mencoba membangun atau membangun kembali solusi. Itu hanya berhenti setelah saya mencabut perangkat karena saya harus menerima panggilan.
sumber
Hanya untuk memasukkan 2 sen saya. Masalah saya diselesaikan dengan membuka Task Manager dan mematikan aplikasi. Itu berjalan di latar belakang tanpa ada indikasi bahwa itu sedang berjalan sama sekali (tidak ada item di bilah tugas, tidak ada ui, tidak ada), tetapi saya tidak yakin mengapa ini terjadi. Jelas debugger tidak berjalan dan saya hanya memiliki satu contoh VS yang dibuka pada saat itu. Saya heran bahwa hal ini masih terjadi di VS 2017 ini.
Mungkin saya dapat menambahkan langkah pembuatan yang mencari aplikasi yang menjalankan latar belakang dan membunuhnya sebelum memulai yang baru.
sumber
Saya memiliki masalah yang sama dan tidak dapat memperbaikinya dengan menggunakan metode apa pun yang disebutkan dalam jawaban sebelumnya. Saya menyelesaikan masalah dengan mematikan semua contoh "SSIS Debug Hist (32 bit)" di task manager dan sekarang bekerja seperti biasa.
sumber
Menghapus folder Obj, retail, dan debug dari proyek .NET dan membangun kembali berfungsi untuk saya.
sumber
Bagaimana aplikasi web Anda dikonfigurasi? Apakah itu berjalan di bawah Cassini (server web baki) atau IIS?
Ini seharusnya tidak terjadi secara normal. Saya pikir ProcessExplorer dapat memberi tahu Anda file apa yang telah dikunci oleh suatu proses. Jika tidak proses explorer salah satu alat sysinternals lainnya.
Satu hal yang perlu dicoba bahkan sebelum mengunduh salah satu alat SI adalah menghentikan server web Cassini, dan melihat apakah itu membebaskan file.
sumber
Apa yang berhasil bagi saya adalah memulai ulang IIS
sumber
saya punya masalah yang sama ini juga. mengubah konfigurasi debug / rilis tidak berhasil. setidaknya bukan tanpa membangun di antaranya.
dalam solusi saya (winform) itu diselesaikan dengan membuka bentuk utama dari winform di desainer. beralih ke kode (F7). Kemudian tutup kode, tutup perancang winform dan bangun kembali semua (ctrl-shift-B). Ini berhasil untuk saya.
Sepertinya beberapa jenis pegangan dari dalam aplikasi winform (yang menjalankan backgroundworker) masih memiliki pegangan file pada beberapa perpustakaan lain yang digunakan.
sumber
Saya memiliki dua contoh Visual Studio membuka solusi yang sama.
sumber
Dalam kasus saya, ada beberapa proses vstest yang berjalan (dengan berbagai nama tetapi semuanya berisi string vstest). Saya harus menghentikannya di taskmgr.
sumber
Kesalahan yang sama, diselesaikan dengan memperbarui paket dukungan Google Nuget
sumber
Ketika saya mengakhiri prosesnya
.Net Core Host
, semuanya dibangun dengan baik. Saya tidak harus menutup Visual Studio atau mengubah apa pun.sumber
Bagi mereka yang mengembangkan VS dengan Docker, restart layanan docker untuk windows dan masalah akan segera teratasi.
Sebelum me-restart buruh pelabuhan saya mencoba semua jawaban yang disebutkan, tidak menemukan proses msbuild.exe berjalan, juga mencoba me-restart VS tanpa hasil, hanya me-restart buruh pelabuhan yang berfungsi.
sumber
Satu solusi lagi: ketika file terkunci, proses pemblokiran dilaporkan (seperti "ServiceHub.Host.CLR.x64 (7764)") dengan idnya di dalam tanda kurung. Untuk menghilangkan proses, buka PowerShell (x + Win + I) dan ketik: "Stop-Process -Id idNumber".
sumber
Saya baru-baru ini mengalami masalah saat menerapkan ke Service Fabric. Kesalahan ini menyiratkan 'file' sedang digunakan, namun, saya menemukan bahwa port tersebut sedang digunakan oleh IDE lain. Dengan menghentikan layanan yang sedang berjalan yang sudah dihosting di port, saya dapat menghentikan pengecualian ini terjadi.
sumber
Saya pernah menghadapi masalah yang sama. Saya mencoba Beberapa Solusi yang tercantum di atas tetapi tidak berhasil untuk saya.
Saya memecahkan masalah ini dengan Menutup Sambungan dari Server Explorer dan menutup semua Tab yang terbuka di Visual Studio.
sumber
Jika ini adalah proyek SSIS, buka pengelola tugas dan matikan semua contoh DtsDebugHost.exe, yang seharusnya melepaskan file yang terkunci.
sumber
Saya menggunakan Visual Studio Code dan saya menerima kesalahan ini karena server dev sedang berjalan (saya menjalankan server dev dengan menekan
Ctrl + F5
).Jadi, saya hanya mengklik tanda berhenti untuk menghentikannya dan kesalahannya hilang.
sumber
Saya mengalami masalah ini (dan ini adalah masalah yang saya lihat di tempat lain, bukan hanya VS).
Ini disebabkan oleh Dropbox (dalam kasus saya). Setelah mengedit beberapa kode dan menekan run, terkadang dropbox langsung mengunci file (sehingga dapat memprosesnya).
Solusi 1. Tekan saja lari lagi
Solusi 2. Jeda dropbox. (tidak baik jika Anda menggunakan dropbox sebagai cadangan cloud Anda)
Solusi 3. Hapus folder build dari daftar sinkronisasi dropbox.
sumber