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.



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


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.

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.


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


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.


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.


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

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.


6

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


1
Kamu berhasil. Terima kasih banyak!
Larry

4

Menghapus folder obj dan pembangunan kembali berhasil untuk saya


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.


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.


2

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


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.


2

Solusi bagi saya adalah me-restart komputer.


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


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.


1

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


0

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


0

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


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


0

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


0

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


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.


0

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


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.