Kesalahan versi: "Proses tidak dapat mengakses file karena sedang digunakan oleh proses lain"

91

Saya punya webformsaplikasi 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.

Shaul Behr
sumber
dapatkah Anda mencoba mematikan vshost.exe untuk melihat apakah itu membantu?
rene
@rene - tidak ada proses vshost.exe. Apakah mereka mengganti namanya di VS 2010?
Shaul Behr
[nama Anda aplikasi] .vshost.exe
rene
@rene - tidak, tidak ada yang muncul dalam proses saat ini dengan nama itu
Shaul Behr
1
@ Shaul sudahkah Anda menambahkan kontrol pengguna kustom ke formulir Anda? coba tutup perancang sebelum menjalankan: stackoverflow.com/questions/2690119/…
rene

Jawaban:

135

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.

tangkapan layar

Saya kira mengubah konfigurasi melepaskan vcshost dan devenv.

Yechiel BD
sumber
2
Jawaban terbaik, IMO. (Ah- dia memberi dirinya kredibilitas.)
Jason P Sallinger
Ini adalah solusi yang bagus! Meskipun terkadang berhenti bekerja karena beberapa alasan (?).
Christopher D. Emerson
3
@ChrisEerson Saya telah memperhatikan itu juga. Saya dapat beralih ke Rilis dan membangun serta menjalankan aplikasi, tetapi bahkan tidak dapat membangun proyek setelah beralih kembali ke Debug.
Zack
Saya akhirnya harus me-restart Visual Studio untuk menyingkirkan rakitan. Saya mencoba mereset IIS, dan solusi di atas tetapi saya masih dapat melihat file dll yang ada di folder C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL
Weihui Guo
1
Ini bekerja tepat sekali, lalu tidak pernah lagi. Bahkan setelah me-restart VS. Tidak peduli berapa banyak saya beralih antara Rilis dan Debug, itu gagal.
Frank H.
24

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!

Shaul Behr
sumber
1
Mungkin itu karena file apa pun yang mengalami masalah tidak lagi diakses oleh proses apa pun sejak dihapus. Menghapus semua file HARUS menyelesaikannya. Pemikiran yang bagus.
Jeff LaFay
2
Ini masih terjadi pada proyek hanya baris perintah (tidak ada formulir), jadi saya tidak yakin Anda benar-benar melakukan apa pun.
Zack
16

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.

Yechiel BD
sumber
4
Itu menyelesaikan masalah tetapi Console.WriteLine () tidak lagi mengeluarkan string di jendela Output.
Pierre Fournier
2
Masalahnya masih berlanjut setelah menghapus centang pada kotak di aplikasi konsol.
Zack
2
Ini bekerja untuk saya pada proyek klien Windows. Saya tidak mencentang kotaknya, berhasil dibuat, lalu mencentang ulang dan berhasil lagi.
Fei-Xue
1
tidak bekerja untuk saya. Sekarang aplikasi itu sendiri terkunci. bukan aplikasi host.
Boris Ivanov
9

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.

Justin W.
sumber
Skrip acara pra-bangun di sini akhirnya memperbaikinya untuk saya - terima kasih!
Christopher D. Emerson
Ini adalah satu-satunya komentar yang pernah melakukan apa pun untuk saya, saya tidak percaya masalah sederhana seperti itu terus ada selama bertahun-tahun tanpa tambalan.
ConstantineK
7

VS2017 - Dipecahkan dengan menutup semua contoh MSBuild.exe di pengelola tugas windows

lloyd
sumber
5

Sedikit terlambat untuk menjawab, tetapi saya menyelesaikan ini dengan membuka properti proyek> tab "Debug"> hapus centang "Aktifkan proses hosting Visual Studio".

John Willemse
sumber
5

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!

Ola Eldøy
sumber
Ini adalah satu-satunya solusi yang berhasil untuk saya sejauh ini. Solusi bagus. Menghemat saya dari masalah reboot.
JHubbard80
Akan menyenangkan memiliki ini sebagai pra-bangun. Saya selalu mengalami masalah ini! Sangat mengganggu.
Shimmy Weitzhandler
4

Saya menyelesaikan ini dengan menghapus folder bin \ Debug dan, mungkin, memulai ulang VS

Johannes Wentu
sumber
Masalahnya adalah Anda tidak dapat melakukan ini setiap saat. Bagi saya, kesalahan terjadi setiap kali saya membangun kembali dan kemudian mencoba menjalankan aplikasi.
FrenkyB
2

Bagi saya, itu adalah Layanan Windows yang diinstal dan dijalankan. Setelah saya menghentikannya, pembuatannya berhasil.

Garrison Neely
sumber
2

Jalankan perintah ini dari kotak Run:

net stop iisadmin /y

lalu

iisreset

bekerja untuk saya. vs 2003

untuk Ha
sumber
1

Baru-baru ini mengalami masalah ini ketika mencoba membangun solusi yang sedang saya kerjakan (bukan hanya proyek winforms).
Selain buildkegagalan, 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 mengakhiri devenvproses - 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 dariFile >> Open >> Project/Solution menemukannya berfungsi seperti biasanya.

Saat ini tidak tahu mengapa - akan terus mencari ini tetapi untuk saat ini, setidaknya saya bisa bekerja!

Guy Passy
sumber
1

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 !!

David Silva-Barrera
sumber
1

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.

Tomislav3008
sumber
1

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.

Benjamin McGill
sumber
1

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.

BM
sumber
1

Menghapus folder Obj, retail, dan debug dari proyek .NET dan membangun kembali berfungsi untuk saya.

Siddhant Gupta
sumber
0

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.

Andy
sumber
Ini bukan aplikasi web; itu bentuk anggur.
Shaul Behr
3
Ah, maka Anda mungkin ingin mengedit pertanyaan Anda saat Anda memulai dengan "Saya punya aplikasi formulir web C # ..."
Andy
0

Apa yang berhasil bagi saya adalah memulai ulang IIS

Beanwah
sumber
0

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.

Obelix
sumber
0

Saya memiliki dua contoh Visual Studio membuka solusi yang sama.

Janis S.
sumber
0

Dalam kasus saya, ada beberapa proses vstest yang berjalan (dengan berbagai nama tetapi semuanya berisi string vstest). Saya harus menghentikannya di taskmgr.

JT
sumber
0

Kesalahan yang sama, diselesaikan dengan memperbarui paket dukungan Google Nuget

Gustavo Baiocchi Costa
sumber
0

Ketika saya mengakhiri prosesnya .Net Core Host, semuanya dibangun dengan baik. Saya tidak harus menutup Visual Studio atau mengubah apa pun.

slimeygecko
sumber
0

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.

Carlos
sumber
0

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".

TripleAccretion
sumber
0

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.

osoclever.dll
sumber
0

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.

Jayesh Baviskar
sumber
0

Jika ini adalah proyek SSIS, buka pengelola tugas dan matikan semua contoh DtsDebugHost.exe, yang seharusnya melepaskan file yang terkunci.

metabuddy
sumber
0

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.

Seif
sumber
0

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.

KevinLeeSmith
sumber