İstenen işlem, kullanıcı eşlemeli bölümü açık olan bir dosyada gerçekleştirilemez


210

Ne zaman ana dosya durdurduktan sonra bin dosyama 4 dosya kopyalamak için çalıştım, bir dosya (TexteDll) ile bir hata alıyorum. Hata:

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

Bazı sistem kilitlerinden kaynaklanıyor olabilir. Ya da belki başka bir işlem bu DLL kullanıyor. Google'a girdiğimde, sistemi yeniden başlatmanın bunu çözebileceğini buldum.

Bunun için bir neden veya çözüm önerisi olan var mı? TexteDll (genel, sürüm, güvenlik, vb.) Özelliklerini inceledim. Her şey normal görünüyor.



8
aslında sorunun çok daha fazla 'kopyası' var (örneğin: stackoverflow.com/questions/1818076/… ) - sorun, kök nedeninin her seferinde farklı bir şey olması.
MaciekTalaska

6
bir dahaki sefere microsoft'un sitesinden "işlem gezgini" ni kullanmayı deneyin. "Bulma tutamacı" adlı bir özelliğe sahiptir. dosyanızı orada aradığınızda hangi işlemin o dosyada bir tutamağı olduğunu gösterecektir. Ardından, bu programın neden bu erişime sahip olduğunu araştırmaya başlayabilirsiniz. BTW, bir hizmetin durdurulması, hizmeti barındıran yürütülebilir dosyanın sona ereceği anlamına gelmez. Yürütülebilir bir dosyada birden çok hizmet bulunabilir. En kötü durumda, çok miktarda bellek kullanan birçok .net hizmeti, hizmetin stop olayından birkaç dakika sonra gerçekleşen belleği serbest bıraktıktan sonra sona erme eğilimindedir.
Erdoğan Kurtur

3
Hehehe Visual Studio DLL'imi kilitliyordu. Visual Studio'yu kapattı ve Çözümü yeniden oluşturmaya çalıştı ve işe yaradı.
Leniel Maccaferri

Bu açıkça bir bellek çatışmasıdır. Nesnenin belirli bir 'örneğinde' ayrılmış bir bit bellek eşlenir, daha sonra kendisine ayrılan belleğin (statik olarak?) Başka bir yerde, muhtemelen farklı bir sistem erişimi düzeyiyle eşlendiğini bulur.
ouflak

Yanıtlar:


177

Benim durumumda Hata Ayıklama klasöründe derlenmiş DLL kilitleyen Explorer oldu ... Garip, değil mi?

Unlocker adlı bir araç kullanarak öğrendim.

Unlocker ile silmek zorunda kaldım, dosya üzerinde hiçbir kilit olmadığını söylerken bile ve o tek dosyayı silene kadar klasörü silemedim ...

Bundan sonra derlendi.

DÜZENLE:

Benim durumumda bunun neden olduğunu öğrendim. DLL Visual Studio içindeki bir metin düzenleyicisinde açmıştı ...


33
Görsel stüdyo pencerelerimden birinde de dlo'yu açtım. Bu güncellemeyi gönderdiğiniz için teşekkür ederiz.
ptfaulkner

3
Aynı şey, bir şekilde tehlikeli DLL, editördeki bir metin penceresinde açıktı.
Harv

3
DLL de VS bir sekme olarak açın! Teşekkür ederim!
Connell

5
Tam açıklama: "Unlocker" bağlantısı toplam casus yazılımdır. İstediğinizi söyleyen tüm kutuların işaretini kaldırsanız bile, her türlü araç çubuğunu ve boku yükler.
Tim

7
Unlocker'ın Process Explorer etiketini kullanın . PE çalıştıktan sonra Bul -> Tanıtıcı veya Dll Bul'a gidin ve kilitli dosyanın adını yapıştırın. Hangi işlemin onu kilitlediğini gösterecektir. Bunu yapmanın uygun olduğundan eminseniz öldürün ve sorun çözülmelidir.
Nikita G.

71
  • Bazen iki veya daha fazla proje arasında başvurulan montaj sürümü uyuşmazlığıyla ilgili bir uyarıya çift tıkladığınızda montaj görünüm penceresini kapatmayı unutursunuz ve diğer sekmeler arasında kalır ... böylece montaj VS'nin kendisi tarafından kilitlenir ve Bunu anlamak çok zamanımı aldı :)

    VS'nin sağladığı güç konusunda dikkatli olun;)

  • Başka bir kukla senaryo. Bazen basitçe tüm obj klasörü veya sadece kilitli olanı bu crappy hata ile yardımcı olarak uyarılır dosya silinir.

2
benim için sıraladım ... Hatta bir sistemi yeniden başlattım ama VS montaj görünüm penceresini yeniden açtı. Tüm sekmeleri kapatmak işi yaptı. Şerefe
Dave Lawrence

35

VS üzerindeki tüm belgeleri kapatın ve yeniden oluşturmaya çalışın. Çalışmazsa VS'yi yeniden başlatın. Bu sorun, DLL dosyalarının kilitlenmesi ile ilgilidir.


3
aynı, VS ile biraz tuhaflık. restart benim için sıraladı.
PJUK

1
Bu benim için çalıştı. Benim özel durumumda garip bir şey. Ben exe VS çevre dışında bağımsız yürütmüştü. Bir gece (hafıza testi - geçti) bıraktı, sabah kapattı, birkaç küçük kod değişikliği ve aniden bu yüzden yapımı bitiremedi. Bu hafızanın bu şekilde nasıl çatıştığı göründü.
ouflak

Kötü, teşekkürler, açık bir belge hataya neden oldu, ne BS!
Brian Ogden

"Tüm Belgeleri Kapat" ve yeniden inşa aslında benim için çalıştı! : o
Antoine Meltzheim

11

Visual studio'yu kapatın, bölmeyi silin, yayın klasöründe hata ayıklayın ve visual studio projesini tekrar başlatın. bu benim sorunumu çözdü


Bu benim için çalıştı! Teşekkürler! Her ihtimale karşı dizinleri yeniden adlandırdım ve işe yaradı.
DavidScherer


10

Ben bir geliştiriciyim ve Unlocker gibi Registery'ye enjekte edilen uygulamaları sevmiyorum. Ben süreç benim dll kilitli ve süreci öldürdü SysInternals Process Explorer kullandım Find > Find Handle or Dll [Ctrl-F].


1
VS kapatıldığında ölmeyen bir VS işlemi tarafından kilitlendi bulundu.
Yoztastic

2
DevEnv kapatıldıktan ve Görev Yöneticisi bunu göstermedikten sonra bile, Process Explorer birkaç DevEnv Askıya Alma örneğini gösterdi. Bunları öldür ve işe yaradı.
DeclanMcD

1
Bu, en doğru cevaptır, çünkü sadece "benim durumumdan dolayı X" olduğunu söylemek yerine, hangi işlemin dosyayı kilitlediğini nasıl bulacağını gösterir . Windows'taki her geliştirici, alet kemerine procexp ve procmon eklemekten yararlanır!
Matt Wanchap

9

Diğerleri, bu hatanın dosyada kilitli başka bir uygulamadan kaynaklandığını zaten belirlemişlerdir. Sadece git diffsiz onu bırakana kadar dosyaları kilitler işaret etmek istedim . Benim durumumda buna neden olan buydu.


Benim için de aynı sorun var. Farkı bırakmamıştım unuttum. Ne yazık ki, diğer pencereleri bir grup kapatıp hala bir fark olduğunu görene kadar bu cevabı görmedim. Sonra bir dupe cevabı bu yüzden +1 :) yayınlamadığından emin
oluyordum

1
@codeMagic Git 2.23 (3Ç 2019) bu tuzaktan kaçınacaktır. Aşağıdaki cevabımı
VonC

9

Aynı sorunu yaşadım. Nasıl çözdüm:

  1. "Görev Yöneticisi" ni açın
  2. Görevi sonlandır "Explorer.exe"
  3. "Dosya" -> Yeni görev oluştur'u tıklayın - "explorer.exe" yazın -> Tamam
  4. Projemi temizle ve işe yarıyor

Ayrıca Görev Yöneticisi'nden Explorer işlemini yeniden başlatmak zorunda kaldım. Benim durumumda, Explorer'ın "Önizleme" alanında "sorunlu" dosyayı görüntülemiştim. Bu aynı zamanda dosyaları serbest bırakmadan zaman zaman kilitliyor gibi görünüyor. Tüm Explorer pencerelerini kapatmak işe yaramadı. Süreci yeniden başlatmak zorunda kaldı.
gehho

En sonunda! Teşekkür ederim.
TheJack

6

Herhangi bir Anti-virüs yazılımı çalıştırıyor musunuz? AV yazılımının (veya başka bir yazılım parçasının) soruna neden olan dosya eşleme API'lerini kullanarak dosyayı okuması mümkündür.


6

Benim durumumda MSBuild.exedosyayı kilitleyen bir asılı işlemi öldürmek zorunda kaldım (Visual Studio'yu kapattıktan sonra bile vardı).


1
Başardın. Çok teşekkürler!
Larry

4

Obj klasörünü silmek ve yeniden oluşturmak benim için çalıştı


3

Ben de aynı problemi yaşadım. Yeniden başlatma benim için çalışmadı. Görev yöneticisinde VBSCompiler adı verilen bir işlem vardı. Bu hatayı düzeltmek için işlemi sonlandırmak zorunda kaldım.


Ayrıca çözümünüzü temizleyip tekrar deneyebilirsiniz
Nirjhar Vermani

3

Burada yayınlanan çözümlerin hiçbiri benim için işe yaramadı. Dosyayı kilitleyen devenv.exe (Visual Studio) idi, ancak yeniden başlatırsam yeniden kilitlerdim.

Tuhaf bir şekilde, Windows dosyaları silmeme izin vermedi (Geri Dönüşüm Kutusu'na), ancak Shift + Delete (kalıcı silme) çalıştı.


2

Visual Studio'yu kapatın ve yönetici olarak çalıştırın. Sorunum düzeltildi.


Rstudio'da parlak bir uygulama oluştururken bu hatayı alıyordum, bu yüzden bu cevapların çoğu bana yardımcı olmadı. Ama bunu gördüm ve rstudio'yu yönetici olarak yeniden başlatmayı denedim ve işe yaradı. Sonra kullanıcı olarak çalışmaya geri döndüğümde tekrar çalıştı.
Paul

2

Benim için çözüm VS tüm örneklerini kapatmak ve herhangi bir asılı devenv.exe işlemleri öldürmek oldu.


2

Benim için çözüm bilgisayarı yeniden başlatmaktı.


2

Bu edilmiş işaret tarafından 2016 yılında Andrew Cuthbert diff kilitler dosyaları bunun dışında bırakmak iyi dek olarak söyledi.

Git 2.23 (Ç3 2019) ile durum böyle değil

Bakınız Johannes Schindelin ( ) tarafından 3aef54e (11 Temmuz 2019) taahhüdü . (Göre Birleştirilmiş Junio Cı Hamano - - içinde işlemek d9beb46 , 25 Temmuz 2019)dscho
gitster

diff: munmap()harici fark çalıştırmadan önce dosya içeriği

Diyelim ki, a'dan harici bir fark çalıştırırken, söz diff toolkonusu dosyaları yazmak istediğimizi varsaymak güvenlidir.
Windows'da bu, söz konusu dosyalara açık bir tanıtıcı tutan başka bir işlemin, hatta yalnızca eşlenmiş bir bölgenin olamayacağı anlamına gelir.

Bu yüzden git diff, söz konusu dosyalarda kendisinin açık bir tutamağa sahip olmadığından emin olalım .

Aslında, dış fark yazdığımız dosyaları kullandığından dosya çiftini hemen serbest bırakacağız, bu yüzden dosya içeriğini artık bellekte tutmamız gerekmiyor.

Bu, Windows için git-for # 1315'i düzeltir


1

Ant ile Dot Net uygulamaları oluştururken bu hataları görüyordum.

Benim durumumda kurumsal yedekleme yazılımımız Symantec DLO Agenttı. Durdurma ve virüsten koruma yazılımımdaki dizini dışlama ve Visual Studio'yu kapatma çalışıyor gibi görünüyor.


1

benim durumumda proje kök obj klasörü silindi ve proje yeniden benim sorunum çözüldü !!!


0

Bu hatayla karşılaştım ve sorun FxCop projeme karşı çalışıyordu ortaya çıktı. FxCop'u kapattım ve sonra tekrar derleyebildim.


0

Bir web uygulamasıysa, Geçici ASP.NET Dosyaları klasöründeki dosyaları silmek bir çözüm olabilir.


0

AQ Time gibi profil kullanıcıları kullanıyorsanız, bunlar da dosyayı kilitliyor olabilir. Bu durumda çözüm, profil oluşturucuyu yeniden başlatmak veya söz konusu düzeneği profilden çıkarmak / yüklemek olacaktır. AQ Time için bir süre sonra dosyayı serbest bıraktığını fark ettim, ama hayatım boyunca bu zaman aşımının ne olduğunu söyleyemem. Rastgele görünüyor



0

Başka bir konsolda çalışan söz konusu bir 'more' vs dosyası nedeniyle bu hatayı yaşadım. Hata.


0

Yukarıdakilerin hiçbiri bu sorunu çözmedi.

Birisi çözümümde derleme yapılandırmasında x64 CPU kullanacak şekilde ayarlanmış bir proje vardı. Herhangi bir CPU olarak değiştirilmesi, yapının yeni bir klasör kullanmasına neden oldu. Hala bu dosyada hangi işlemin kilitlendiğini bilmiyorum.


0

Aynı sorunu yaşadım. Geçici klasörden dll kaldırıldı, salt okunur erişimi kaldırın ve makineyi yeniden başlattım ve çalışmasını sağladım.


0

Benim durumumda, sadece tüm örneği kapatın ve benim kök uygulama klasörünü kopyalayın ve farklı bir konuma yapıştırın sonra VS çalışır çözüm açın ....


-1

Sorunum ayrıca İşlem Gezgini'ni eleyerek çözüldü. Ancak, öldürmek zorunda olduğum süreç tüm VS ve SQL uygulamalarını kapattıktan sonra hala çalışmakta olan MySQL Notifier.exe oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.