Operasi yang diminta tidak dapat dilakukan pada file dengan bagian yang dipetakan pengguna terbuka

210

Setiap kali saya mencoba menyalin 4 file ke folder bin saya, setelah menghentikan layanan utama, saya mendapatkan kesalahan dengan satu file (TexteDll). Kesalahannya adalah:

Cannot copy TexteDll: The requested operation cannot be performed on a file 
with a user-mapped section open

Mungkin karena beberapa penguncian sistem. Atau mungkin proses lain menggunakan DLL ini. Ketika saya mencari di Google, saya menemukan bahwa me-reboot sistem dapat menyelesaikan ini.

Adakah yang bisa menyarankan penyebab atau solusi untuk ini? Saya memeriksa properti TexteDll (umum, versi, keamanan, dll). Semuanya tampak normal.

Peter
sumber
8
sebenarnya ada lebih banyak 'duplikat' dari pertanyaan (misalnya: stackoverflow.com/questions/1818076/… ) - masalahnya adalah bahwa setiap kali penyebab root adalah sesuatu yang berbeda.
MaciekTalaska
6
lain kali coba gunakan "proses explorer" dari situs microsoft. Ini memiliki fitur yang disebut "find handle". cari file Anda di sana dan itu akan menunjukkan kepada Anda proses mana yang memiliki pegangan pada file itu. Kemudian Anda dapat mulai menyelidiki mengapa program itu memiliki akses itu. BTW, menghentikan layanan tidak selalu berarti executable yang menyelenggarakan layanan akan berakhir. Sebuah executable dapat menampung beberapa layanan. Dalam kasus terburuk, banyak layanan .net yang menggunakan sejumlah besar memori cenderung berakhir setelah melepaskan memori yang terjadi kadang-kadang beberapa menit setelah acara berhenti layanan.
Erdogan Kurtur
3
Hehehe Visual Studio sedang mengunci DLL saya. Ditutup Visual Studio dan mencoba untuk membangun kembali Solusi dan itu berhasil.
Leniel Maccaferri
Ini jelas merupakan konflik memori. 'Contoh' tertentu dari objek memiliki beberapa memori bit yang dialokasikan dipetakan, kemudian menemukan bahwa memori (secara statis?) Dialokasikan untuk itu, telah dipetakan di tempat lain, kemungkinan dengan tingkat akses sistem yang berbeda.
ouflak

Jawaban:

177

Dalam kasus saya itu adalah Explorer yang mengunci DLL yang telah dikompilasi di folder Debug ... Aneh, bukan?

Saya menemukan menggunakan alat yang disebut Unlocker.

Harus menghapus dengan Unlocker, bahkan ketika dikatakan bahwa tidak ada kunci pada file, dan saya tidak dapat menghapus folder sampai saya tidak menghapus file tunggal itu ...

Setelah itu dikompilasi.

EDIT:

Saya menemukan mengapa dalam kasus saya ini terjadi. Saya memiliki DLL dibuka di editor teks di dalam Visual Studio ...

Daniel Lobo
sumber
33
Saya punya dlo terbuka di salah satu dari banyak jendela studio visual saya juga terbuka. Terima kasih telah memposting pembaruan itu.
ptfaulkner
3
Hal yang sama, entah bagaimana DLL yang menggantung itu terbuka di jendela teks di editor.
Harv
3
DLL terbuka sebagai tab di VS juga! Terima kasih!
Connell
5
Pengungkapan penuh: tautan ke "Pembuka Kunci" adalah spyware total. Itu menginstal semua jenis toolbar dan omong kosong, bahkan jika Anda menghapus centang semua kotak mengatakan Anda tidak menginginkannya.
Tim
7
Gunakan Process Explorer instread dari Unlocker. Setelah PE berjalan, buka Find -> Find Handle atau Dll dan rekatkan nama file yang dikunci. Ini akan menunjukkan proses mana yang menguncinya. Bunuh jika Anda yakin tidak apa-apa untuk melakukannya dan masalahnya harus diselesaikan.
Nikita G.
71
  • Kadang-kadang ketika Anda mengklik dua kali pada peringatan tentang ketidaksesuaian versi perakitan yang direferensikan antara dua atau lebih proyek Anda lupa untuk menutup jendela tampilan perakitan dan tetap ada di antara tab lain ... sehingga Anda berakhir dengan perakitan dikunci oleh VS sendiri dan saya butuh cukup banyak waktu untuk mengetahuinya :)

    Hati-hati dengan kekuatan yang disediakan VS;)

  • Skenario boneka lain. Kadang-kadang hanya menghapus seluruh folder obj atau hanya file yang diperingatkan karena yang terkunci membantu mengatasi kesalahan jelek ini.
Arman McHitarian
sumber
2
mengurutkannya untuk saya ... Saya bahkan melakukan restart sistem tetapi VS membuka kembali jendela tampilan perakitan. Menutup semua tab berhasil. Cheers
Dave Lawrence
35

tutup semua dokumen di VS dan coba bangun kembali. Jika tidak berhasil restart VS. Masalah ini terkait dengan kunci file DLL.

cihata87
sumber
3
sama, beberapa keanehan dengan VS. restart atur untuk saya.
PJUK
1
Ini berhasil untuk saya. Hal aneh dalam keadaan khusus saya. Saya telah mengeksekusi exe standalone saya, di luar lingkungan VS. Membiarkannya berjalan semalam (tes memori - lulus), mematikannya di pagi hari, beberapa perubahan kode kecil, dan tiba-tiba tidak dapat menyelesaikan pembangunan saya karena ini. Aneh bagaimana memori ini tampaknya bertentangan seperti ini.
ouflak
Nasty, terima kasih, dokumen terbuka menyebabkan kesalahan, apa BS!
Brian Ogden
"Tutup semua Dokumen" dan rekondisi benar-benar bekerja untuk saya! : o
Antoine Meltzheim
11

Tutup studio visual, hapus bin, debug folder rilis, dan mulai proyek studio visual lagi. itu memperbaiki masalah saya

pengguna2038221
sumber
Ini berhasil untuk saya! Terima kasih! Saya mengganti nama direktori, untuk berjaga-jaga dan berhasil.
DavidScherer
10

Saya seorang pengembang dan tidak suka aplikasi yang disuntikkan ke Registery seperti Unlocker. Saya menggunakan SysInternals Process Explorer yang prosesnya mengunci dll saya Find > Find Handle or Dll [Ctrl-F]dan mematikan prosesnya.

guneysus
sumber
1
Menemukannya terkunci oleh proses VS yang tidak mati ketika VS ditutup.
Yoztastic
2
Bahkan setelah DevEnv ditutup dan Task Manager tidak menunjukkannya, Process Explorer menunjukkan beberapa contoh DevEnv Suspended. Bunuh ini dan itu berhasil.
DeclanMcD
1
Ini adalah jawaban yang paling benar, karena ini menunjukkan bagaimana menemukan proses mana yang mengunci file, daripada hanya mengatakan "dalam kasus saya itu karena X". Setiap pengembang di Windows akan mendapat manfaat dari menambahkan procexp dan procmon ke toolbelt mereka!
Matt Wanchap
9

Orang lain telah membuktikan bahwa kesalahan ini disebabkan oleh aplikasi lain yang memiliki kunci pada file tersebut. Hanya ingin menunjukkan bahwa git difffile juga terkunci sampai Anda berhenti. Itulah yang menyebabkan ini dalam kasus saya.

andrew.cuthbert
sumber
Masalah yang sama bagi saya. Lupa saya tidak keluar dari diff. Sayangnya, saya tidak melihat jawaban ini sampai saya menutup banyak jendela lain dan melihat itu masih berbeda. Kemudian memastikan saya tidak memposting jawaban penipuan jadi +1 :)
codeMagic
1
@codeMagic Git 2.23 (Q3 2019) akan menghindari jebakan itu. Lihat jawaban saya di bawah ini
VonC
9

Saya memiliki masalah yang sama. Bagaimana saya mengatasinya:

  1. Buka "Task Manager"
  2. Akhiri tugas "Explorer.exe"
  3. Klik "File" -> Buat tugas baru - Ketikkan "explorer.exe" -> OK
  4. Bersihkan proyek saya dan berhasil
pengguna10991945
sumber
Saya juga harus memulai ulang proses Explorer dari Task Manager. Dalam kasus saya, saya telah melihat file "bermasalah" di area "Pratinjau" Explorer. Ini juga tampaknya mengunci file dari waktu ke waktu tanpa pernah melepaskannya. Menutup semua jendela Explorer tidak membantu. Harus memulai kembali proses.
gehho
Akhirnya! Terima kasih.
TheJack
6

Apakah Anda menjalankan perangkat lunak Anti-virus. Mungkin saja perangkat lunak AV (atau perangkat lunak lain) sedang membaca file menggunakan API pemetaan file yang menyebabkan masalah.

Eoin Campbell
sumber
6

Dalam kasus saya, saya harus membunuh MSBuild.exeproses gantung yang mengunci file (itu ada di sana bahkan setelah saya menutup Visual Studio).

t3chb0t
sumber
1
Kamu berhasil. Terima kasih banyak!
Larry
4

Menghapus folder obj dan pembangunan kembali berhasil untuk saya

colmde
sumber
3

Saya memiliki masalah yang sama. Restart tidak bekerja untuk saya. Ada proses yang disebut VBSCompiler sedang berjalan di task manager. Saya harus mengakhiri proses untuk memperbaiki kesalahan ini.

Nirjhar Vermani
sumber
Anda juga dapat membersihkan solusi Anda dan coba lagi
Nirjhar Vermani
3

Tidak ada solusi yang diposting di sini yang berfungsi untuk saya. Itu devenv.exe (Visual Studio) mengunci file, tetapi jika saya me-restart, itu akan mengunci kembali.

Anehnya, Windows tidak akan membiarkan saya menghapus file (ke Recycle Bin), tetapi Shift + Delete (penghapusan permanen) bekerja.

makhdumi
sumber
2

Tutup Visual Studio dan Jalankan sebagai administrator. Ini memperbaiki masalah saya.

Sanjay Ghinaiya
sumber
Saya mendapatkan kesalahan ini ketika membangun aplikasi yang mengkilap di rstudio, jadi banyak dari jawaban ini tidak membantu saya. Tapi saya melihat ini dan mencoba me-restart rstudio sebagai administrator, dan itu berhasil. Lalu ketika saya kembali berjalan sebagai pengguna itu berfungsi lagi.
Paul
2

Solusi bagi saya adalah untuk menutup semua contoh VS dan untuk membunuh semua proses devenv.exe menggantung.

pengguna2338408
sumber
2

Solusi bagi saya adalah me-restart komputer.

ML13
sumber
2

Telah ditunjukkan pada tahun 2016 oleh Andrew Cuthbert bahwa git juga mengunci file hingga Anda keluar dari situ.

Itu tidak akan menjadi kasus dengan Git 2.23 (Q3 2019)

Lihat commit 3aef54e (11 Jul 2019) oleh Johannes Schindelin ( dscho) .
(Digabung oleh Junio ​​C Hamano - gitster- di commit d9beb46 , 25 Jul 2019)

diff: munmap()isi file sebelum menjalankan diff eksternal

Saat menjalankan diff eksternal dari, katakanlah, a diff tool, aman untuk menganggap bahwa kami ingin menulis file yang dimaksud.
Pada Windows, itu berarti bahwa tidak ada proses lain yang memegang pegangan terbuka untuk file-file tersebut, atau bahkan hanya wilayah yang dipetakan.

Jadi mari kita pastikan bahwa git diffitu sendiri tidak memegang pegangan terbuka ke file yang dimaksud.

Faktanya, kita hanya akan merilis pasangan file segera, karena diff eksternal menggunakan file yang baru saja kita tulis, jadi kita tidak perlu menahan konten file dalam memori lagi.

Ini memperbaiki git-for-windows # 1315

VONC
sumber
1

Saya melihat kesalahan ini ketika membangun aplikasi Dot Net dengan Ant.

Dalam kasus saya itu adalah perangkat lunak cadangan perusahaan kami, Agen DLO Symantec. Menghentikannya dan mengecualikan direktori dalam perangkat lunak antivirus saya dan menutup Visual Studio tampaknya berhasil.

Robert Bratton
sumber
1

dalam kasus saya menghapus folder obj di root proyek dan membangun kembali proyek menyelesaikan masalah saya !!!

Ali Rasouli
sumber
0

Saya menemukan kesalahan ini dan ternyata masalahnya adalah FxCop menjalankan proyek saya. Saya menutup FxCop dan kemudian saya bisa mengkompilasi lagi.

Tim
sumber
0

Jika itu adalah aplikasi web menghapus file di folder Temporary ASP.NET Files bisa menjadi solusi.

pahlawan super
sumber
0

Jika Anda menggunakan profiler seperti AQ Time, ini mungkin juga mengunci file. Solusi dalam hal ini adalah me-restart profiler atau hanya membongkar / memuat perakitan yang dimaksud dari profiler. Untuk AQ Time saya perhatikan bahwa itu merilis file setelah beberapa waktu, tetapi saya tidak bisa seumur hidup saya tahu apa itu timeout. Tampaknya acak

memori mimpi
sumber
0

Saya juga mendapat kesalahan yang sama hari ini. Saya telah mengatasi masalah ini dengan membangun kembali proyek.

Siva Sankar Gorantla
sumber
0

Saya mengalami kesalahan ini disebabkan oleh file 'lebih' vs yang dibiarkan berjalan di konsol lain. Ups.

ade jones
sumber
0

Tidak satu pun di atas memecahkan masalah ini.

Seseorang punya satu proyek dalam solusi saya diatur untuk menggunakan CPU x64 dalam konfigurasi build. Mengubahnya ke CPU Apa pun menyebabkan build menggunakan folder baru. Saya masih tidak tahu proses apa yang mengunci file itu.

CM
sumber
0

Saya punya masalah yang sama. Saya menghapus dll dari folder temp, menghapus akses hanya baca dan me-restart mesin dan membuatnya berfungsi.

Sarad Vishwakama
sumber
0

Dalam kasus saya, saya hanya menutup semua instance dan menyalin folder aplikasi root saya dan menempelkannya di lokasi yang berbeda kemudian membuka solusi di VS berfungsi ....

Appu
sumber
-1

Masalah saya juga terpecahkan dengan memilah-milah Process Explorer. Namun, proses saya harus membunuh adalah MySQL Notifier.exe yang masih berjalan setelah menutup semua aplikasi VS dan SQL.

JN88
sumber