การดำเนินการที่ร้องขอไม่สามารถดำเนินการกับไฟล์ที่มีส่วนที่ผู้ใช้แมปเปิดอยู่


210

เมื่อใดก็ตามที่ฉันพยายามคัดลอก 4 ไฟล์ไปยังโฟลเดอร์ bin ของฉันหลังจากหยุดบริการหลักฉันได้รับข้อผิดพลาดด้วยไฟล์เดียว (TexteDll) ข้อผิดพลาดคือ:

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

อาจเป็นเพราะการล็อคระบบบางอย่าง หรืออาจเป็นกระบวนการอื่นกำลังใช้ DLL นี้ เมื่อ googled ฉันพบว่าการรีบูตระบบอาจแก้ไขได้

ใครสามารถแนะนำสาเหตุหรือวิธีแก้ปัญหาสำหรับเรื่องนี้? ฉันตรวจสอบคุณสมบัติของ TexteDll (ทั่วไป, รุ่น, ความปลอดภัย ฯลฯ ) ทุกอย่างดูปกติ



8
จริง ๆ แล้วมี 'ซ้ำซ้อน' ของคำถาม (ตัวอย่างเช่น: stackoverflow.com/questions/1818076/… ) - ปัญหาคือทุกครั้งที่สาเหตุของปัญหาแตกต่างกัน
MaciekTalaska

6
ครั้งต่อไปลองใช้ "process explorer" จากเว็บไซต์ของ microsoft มันมีคุณสมบัติที่เรียกว่า "find handle" ค้นหาไฟล์ของคุณที่นั่นและจะแสดงให้คุณเห็นว่ากระบวนการใดมีตัวจัดการไฟล์นั้น จากนั้นคุณสามารถเริ่มตรวจสอบสาเหตุที่โปรแกรมนั้นเข้าถึงได้ BTW การหยุดบริการไม่ได้หมายความว่าปฏิบัติการที่โฮสต์บริการจะสิ้นสุด ปฏิบัติการอาจโฮสต์หลายบริการ ในกรณีที่เลวร้ายที่สุดบริการ. net จำนวนมากที่ใช้หน่วยความจำจำนวนมากมีแนวโน้มที่จะยกเลิกหลังจากที่ปล่อยหน่วยความจำที่เกิดขึ้นบางครั้งไม่กี่นาทีหลังจากเหตุการณ์หยุดให้บริการ
Erdogan Kurtur

3
Hehehe Visual Studio ล็อค DLL ของฉัน ปิด Visual Studio และพยายามสร้างโซลูชันใหม่และใช้งานได้
Leniel Maccaferri

เห็นได้ชัดว่านี่เป็นความขัดแย้งของหน่วยความจำ 'อินสแตนซ์' ของวัตถุเฉพาะมีการแมปหน่วยความจำบิตที่จัดสรรบางส่วนจากนั้นในภายหลังพบว่าหน่วยความจำ (แบบคงที่?) ได้รับการจัดสรรแล้วถูกแมปไปที่อื่นแล้ว
ouflak

คำตอบ:


177

ในกรณีของฉันมันคือ Explorer ที่ล็อค DLL ที่ถูกคอมไพล์ในโฟลเดอร์ Debug ... แปลกใช่ไหม?

ฉันค้นพบโดยใช้เครื่องมือที่ชื่อว่า Unlocker

ต้องลบด้วย Unlocker แม้ว่ามันจะบอกว่าไม่มีการล็อคไฟล์และฉันไม่สามารถลบโฟลเดอร์ได้จนกว่าฉันจะไม่ลบไฟล์เดียว ...

หลังจากนั้นก็รวบรวม

แก้ไข:

ฉันพบว่าทำไมในกรณีของฉันนี้เกิดขึ้น ฉันเปิด DLL ในโปรแกรมแก้ไขข้อความภายใน Visual Studio ...


33
ฉันเปิดหน้าต่างในหน้าต่างสตูดิโอที่เปิดกว้างหลายแห่ง ขอขอบคุณที่โพสต์การอัปเดตนั้น
ptfaulkner

3
สิ่งเดียวกัน DLL danged ถูกเปิดในหน้าต่างข้อความในตัวแก้ไข
Harv

3
DLL เปิดเป็นแท็บใน VS ด้วยเช่นกัน! ขอบคุณ!
Connell

5
การเปิดเผยแบบเต็ม: ลิงก์ไปยัง "Unlocker" เป็นสปายแวร์ทั้งหมด มันติดตั้งแถบเครื่องมือและอึทุกประเภทแม้ว่าคุณจะยกเลิกการเลือกช่องทั้งหมดที่บอกว่าคุณไม่ต้องการ
ทิม

7
ใช้Process Explorer instread ของ Unlocker เมื่อ PE กำลังทำงานให้ไปที่ค้นหา -> Find Handle หรือ Dll แล้ววางชื่อของไฟล์ที่ถูกล็อค มันจะแสดงกระบวนการที่ถูกล็อค ฆ่ามันถ้าคุณแน่ใจว่ามันโอเคที่จะทำมันและปัญหาควรได้รับการแก้ไข
Nikita G.

71
  • บางครั้งเมื่อคุณดับเบิลคลิกที่คำเตือนเกี่ยวกับแอสเซมบลีเวอร์ชันอ้างอิงที่ไม่ตรงกันระหว่างสองโครงการหรือมากกว่านั้นคุณลืมปิดหน้าต่างมุมมองแอสเซมบลีและมันจะอยู่ที่นั่นในแท็บอื่น ๆ ... ฉันใช้เวลาค่อนข้างมากในการคิดว่า :)

    ระวังด้วย power VS ให้;)

  • อีกสถานการณ์จำลอง บางครั้งก็แค่ลบทั้งโฟลเดอร์ obj หรือเพียงแค่ไฟล์ที่ถูกเตือนในขณะที่ถูกล็อคช่วยด้วยข้อผิดพลาดเส็งเคร็งนี้

2
จัดเรียงสำหรับฉัน ... ฉันยังได้รีสตาร์ทระบบ แต่ VS เปิดหน้าต่างมุมมองการชุมนุมอีกครั้ง การปิดแท็บทั้งหมดทำงาน ไชโย
Dave Lawrence

35

ปิดเอกสารทั้งหมดใน VS และลองสร้างใหม่อีกครั้ง ถ้ามันไม่ทำงานรีสตาร์ท VS ปัญหานี้เกี่ยวข้องกับการล็อคไฟล์ DLL


3
เดียวกันความแปลกประหลาดบางอย่างกับ VS รีสตาร์ทเรียงให้ฉัน
PJUK

1
สิ่งนี้ใช้ได้สำหรับฉัน สิ่งที่แปลกในสถานการณ์เฉพาะของฉัน ฉันใช้งาน exe แบบสแตนด์อโลนนอกสภาพแวดล้อม VS ปล่อยให้มันรันค้างคืน (ทดสอบหน่วยความจำ - ผ่าน) ปิดมันในตอนเช้าเปลี่ยนรหัสเล็ก ๆ สองสามครั้งและทันใดนั้นฉันก็ไม่สามารถสร้างงานของฉันได้เพราะสิ่งนี้ แปลกที่หน่วยความจำนี้ดูเหมือนจะขัดแย้งเช่นนี้
ouflak

น่ารังเกียจขอบคุณเอกสารที่เปิดอยู่ทำให้เกิดข้อผิดพลาดสิ่งที่ BS!
Brian Ogden

"ปิดเอกสารทั้งหมด" และสร้างใหม่ได้จริงสำหรับฉัน! : o
Antoine Meltzheim

11

ปิด visual studio, ลบ bin, debug release folder และเริ่มโครงการ visual Studio อีกครั้ง ที่แก้ไขปัญหาของฉัน


สิ่งนี้ได้ผลสำหรับฉัน! ขอบคุณ! ฉันเปลี่ยนชื่อไดเรกทอรีในกรณีและใช้งานได้
DavidScherer

10

ฉันมีปัญหาเดียวกันและในกรณีของฉันปรากฏว่าไฟล์เอาต์พุตที่มีอยู่ถูกล็อคโดยแอปพลิเคชันอื่น

คุณสามารถตรวจสอบว่าแอปพลิเคชันใดที่กำลังล็อกไฟล์เอาต์พุตของคุณด้วย OpenedFilesView: http://www.nirsoft.net/utils/opened_files_view.html


10

ฉันเป็นนักพัฒนาและไม่ชอบแอปที่ฉีดเข้าสู่ Registery อย่าง Unlocker ฉันใช้SysInternals Process Explorer ซึ่งกระบวนการล็อค dll ของฉันFind > Find Handle or Dll [Ctrl-F]และฆ่ากระบวนการ


1
พบว่ามันถูกล็อคโดยกระบวนการ VS ที่ไม่ตายเมื่อ VS ถูกปิด
Yoztastic

2
แม้หลังจาก DevEnv ถูกปิดและตัวจัดการงานไม่ได้แสดง Process Explorer จะแสดงอินสแตนซ์ของ DevEnv ที่ถูกระงับหลายครั้ง ฆ่าสิ่งเหล่านี้และใช้งานได้
DeclanMcD

1
นี่เป็นคำตอบที่ถูกต้องที่สุดเพราะมันแสดงให้เห็นว่าจะค้นหากระบวนการใดที่ล็อคไฟล์แทนที่จะพูดว่า "ในกรณีของฉันมันเกิดจาก X" นักพัฒนาซอฟต์แวร์ทุกคนใน Windows จะได้รับประโยชน์จากการเพิ่ม procexp และ procmon ลงในแถบเครื่องมือของพวกเขา!
Matt Wanchap

9

คนอื่น ๆ ได้ยอมรับแล้วว่าข้อผิดพลาดนี้เกิดจากแอปพลิเคชันอื่นที่มีการล็อคไฟล์ แค่ต้องการชี้ให้เห็นว่าgit diffล็อคไฟล์เช่นกันจนกว่าคุณจะออกจากมัน นั่นคือสิ่งที่เกิดขึ้นในกรณีของฉัน


ปัญหาเดียวกันสำหรับฉัน ลืมฉันไม่ได้ออกจากความแตกต่าง น่าเสียดายที่ฉันไม่เห็นคำตอบนี้จนกว่าฉันจะปิดหน้าต่างอื่น ๆ และเห็นว่ามันยังอยู่ในระดับที่แตกต่างกัน จากนั้นตรวจสอบให้แน่ใจว่าฉันไม่ได้โพสต์คำตอบหลอกลวงดังนั้น +1 :)
codeMagic

1
@codeMagic Git 2.23 (Q3 2019) จะหลีกเลี่ยงกับดักนั้น ดูคำตอบของฉันด้านล่าง
VonC

9

ฉันมีปัญหาเดียวกัน ฉันจะแก้ไขมันได้อย่างไร:

  1. เปิด "ตัวจัดการงาน"
  2. สิ้นสุดภารกิจ "Explorer.exe"
  3. คลิก "ไฟล์" -> สร้างงานใหม่ - พิมพ์ "explorer.exe" -> ตกลง
  4. ทำความสะอาดโครงการของฉันและใช้งานได้

ฉันต้องรีสตาร์ทกระบวนการ Explorer จากตัวจัดการงาน ในกรณีของฉันฉันดูไฟล์ "ปัญหา" ในพื้นที่ "ดูตัวอย่าง" ของ Explorer นอกจากนี้ยังดูเหมือนว่าจะล็อคไฟล์เป็นครั้งคราวโดยไม่ต้องปล่อยพวกเขา การปิดหน้าต่าง Explorer ทั้งหมดไม่ได้ช่วยอะไร ต้องรีสตาร์ทกระบวนการ
gehho

ที่สุด! ขอบคุณ.
TheJack

6

คุณใช้ซอฟต์แวร์ป้องกันไวรัสหรือไม่ เป็นไปได้ว่าซอฟต์แวร์ AV (หรือซอฟต์แวร์อื่น ๆ ) กำลังอ่านไฟล์โดยใช้ API การแมปไฟล์ซึ่งทำให้เกิดปัญหา


6

ในกรณีของฉันฉันต้องฆ่าMSBuild.exeกระบวนการแฮงค์ที่ถูกล็อคไฟล์ (มันอยู่ที่นั่นแม้หลังจากฉันปิด Visual Studio)


1
คุณตอกมัน ขอบคุณมาก!
Larry


3

ผมมีปัญหาเหมือนกัน. รีสตาร์ทไม่ทำงานสำหรับฉัน มีกระบวนการที่เรียกว่า VBSCompiler ทำงานในตัวจัดการงาน ฉันต้องยุติกระบวนการเพื่อแก้ไขข้อผิดพลาดนี้


คุณสามารถทำความสะอาดทางออกของคุณแล้วลองใหม่อีกครั้ง
Nirjhar Vermani

3

ไม่มีวิธีแก้ปัญหาที่โพสต์ที่นี่ใช้ได้สำหรับฉัน มันเป็น devenv.exe (Visual Studio) ล็อคไฟล์ แต่ถ้าฉันรีสตาร์ทมันจะล็อคอีกครั้ง

โดยปกติ Windows จะไม่ให้ฉันลบไฟล์ (ไปยัง Recycle Bin) แต่ Shift + Delete (การลบแบบถาวร) ทำงานได้


2

ปิด Visual Studio และเรียกใช้ในฐานะผู้ดูแล แก้ไขปัญหาของฉันแล้ว


ฉันได้รับข้อผิดพลาดนี้ในขณะที่สร้างแอปที่เป็นประกายใน rstudio ดังนั้นคำตอบเหล่านี้จำนวนมากจึงไม่มีประโยชน์สำหรับฉัน แต่ฉันเห็นสิ่งนี้และลองรีสตาร์ท rstudio ในฐานะผู้ดูแลระบบและใช้งานได้ จากนั้นเมื่อฉันกลับไปทำงานในฐานะผู้ใช้มันทำงานได้อีกครั้ง
พอล

2

ทางออกสำหรับฉันคือการปิดอินสแตนซ์ทั้งหมดของ VS และเพื่อฆ่ากระบวนการ devenv.exe ที่แขวนอยู่



2

Andrew Cuthbertได้รับการชี้ให้เห็นในปี 2559ว่าคอมไพล์ diff ล็อคไฟล์เช่นกันจนกว่าคุณจะออกจากมัน

ไม่เป็นเช่นนั้นกับ Git 2.23 (Q3 2019)

ดูกระทำ 3aef54e (11 กรกฎาคม 2019) โดยโยฮันเน Schindelin (dscho )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ d9beb46 , 25 กรกฎาคม 2019)

diff: munmap()เนื้อหาไฟล์ก่อนเรียกใช้ diff ภายนอก

เมื่อเรียกใช้ภายนอกที่แตกต่างจากการพูดdiff toolมันมีความปลอดภัยที่จะคิดว่าเราต้องการที่จะเขียนไฟล์ที่เป็นปัญหา
บน Windows นั่นหมายความว่าจะไม่มีกระบวนการอื่นใดที่ถือตัวจัดการแบบเปิดสำหรับไฟล์ดังกล่าวหรือแม้กระทั่งพื้นที่ที่แมป

ดังนั้นขอให้แน่ใจว่าgit diffตัวเองไม่ได้ถือตัวจับเปิดใด ๆ กับไฟล์ที่เป็นปัญหา

ในความเป็นจริงเราจะปล่อยคู่ของไฟล์ทันทีเนื่องจาก diff ภายนอกใช้ไฟล์ที่เราเพิ่งเขียนดังนั้นเราไม่จำเป็นต้องเก็บเนื้อหาไฟล์ในหน่วยความจำอีกต่อไป

วิธีนี้แก้ไขgit-for-windows # 1315


1

ฉันเห็นข้อผิดพลาดเหล่านี้เมื่อสร้างแอปพลิเคชัน Dot Net ด้วย Ant

ในกรณีของฉันมันเป็นซอฟต์แวร์สำรองข้อมูลองค์กรของเรา, Symantec DLO Agent การหยุดและไม่รวมไดเรกทอรีในซอฟต์แวร์ป้องกันไวรัสของฉันและการปิด Visual Studio ดูเหมือนว่าจะทำงานได้



0

ฉันพบข้อผิดพลาดนี้และพบปัญหาคือ FxCop กำลังทำงานกับโปรเจ็กต์ของฉัน ฉันปิด FxCop แล้วฉันจะสามารถรวบรวมได้อีกครั้ง


0

หากเป็นเว็บแอปพลิเคชันการลบไฟล์ในโฟลเดอร์ Temporary ASP.NET Files อาจเป็นวิธีแก้ปัญหา


0

หากคุณกำลังใช้โปรไฟล์เช่น AQ Time สิ่งเหล่านี้อาจถูกล็อกไฟล์ วิธีแก้ปัญหาในกรณีนี้คือการรีสตาร์ท profiler หรือเพียงแค่ถอด / โหลดชุดประกอบที่มีปัญหาจาก profiler สำหรับเวลา AQ ฉันสังเกตเห็นว่ามีการปล่อยไฟล์หลังจากผ่านไประยะหนึ่งแล้ว แต่ฉันทำไม่ได้ตลอดชีวิตของฉันที่จะบอกว่าไทม์เอาต์นั้นคืออะไร ดูเหมือนจะสุ่ม


0

ฉันก็มีข้อผิดพลาดเหมือนกันในวันนี้ ฉันได้แก้ไขปัญหานี้แล้วโดยการสร้างโครงการขึ้นใหม่


0

ฉันมีข้อผิดพลาดนี้เกิดจากไฟล์ vs 'มากกว่า' ในคำถามที่เหลือทำงานในคอนโซลอื่น อุ่ย


0

ไม่สามารถแก้ไขปัญหานี้ได้

มีคนหนึ่งโครงการในโซลูชันของฉันตั้งค่าให้ใช้ x64 CPU ในการกำหนดค่าการสร้าง การเปลี่ยนเป็น CPU ใด ๆ ทำให้การสร้างใช้โฟลเดอร์ใหม่ ฉันยังไม่ทราบว่ากระบวนการใดมี (มี) ล็อกไฟล์ดังกล่าว


0

ฉันมีปัญหาเดียวกันนี้ ฉันลบ dll จากโฟลเดอร์ temp แล้วลบการเข้าถึงแบบอ่านอย่างเดียวและรีสตาร์ทเครื่องและทำให้มันใช้งานได้


0

ในกรณีของฉันฉันเพิ่งปิดอินสแตนซ์ทั้งหมดและคัดลอกโฟลเดอร์แอปพลิเคชันรูทของฉันและวางในตำแหน่งอื่นแล้วเปิดโซลูชันใน VS มันทำงานได้ ....


-1

ปัญหาของฉันยังแก้ไขได้ด้วยการกลั่นกรองผ่าน Process Explorer อย่างไรก็ตามกระบวนการที่ฉันต้องฆ่าคือ MySQL Notifier.exe ที่ยังทำงานอยู่หลังจากปิดแอปพลิเคชัน VS และ SQL ทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.