Thao tác được yêu cầu không thể được thực hiện trên một tệp có phần ánh xạ người dùng mở


210

Bất cứ khi nào tôi cố gắng sao chép 4 tệp vào thư mục bin của mình, sau khi dừng dịch vụ chính, tôi gặp lỗi với một tệp (TexteDll). Lỗi là:

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

Nó có thể là do một số hệ thống khóa. Hoặc có lẽ một quá trình khác đang sử dụng DLL này. Khi tôi googled, tôi thấy rằng việc khởi động lại hệ thống có thể giải quyết điều này.

Bất cứ ai có thể đề nghị một nguyên nhân hoặc giải pháp cho điều này? Tôi đã kiểm tra các thuộc tính của TexteDll (chung, phiên bản, bảo mật, v.v.). Mọi thứ xuất hiện bình thường.



8
thực tế có rất nhiều 'bản sao' của câu hỏi (ví dụ: stackoverflow.com/questions/1818076/ mẹo ) - vấn đề là mỗi khi nguyên nhân gốc là một cái gì đó khác nhau.
MaciekTalaska

6
lần tới hãy thử sử dụng "process explorer" từ trang web của microsoft. Nó có một tính năng gọi là "tìm xử lý". tìm kiếm tập tin của bạn trong đó và nó sẽ cho bạn thấy quá trình nào xử lý tập tin đó. Sau đó, bạn có thể bắt đầu điều tra tại sao chương trình đó có quyền truy cập đó. BTW, dừng dịch vụ không nhất thiết có nghĩa là dịch vụ lưu trữ sẽ kết thúc. Một thực thi có thể lưu trữ nhiều dịch vụ. Trong trường hợp xấu nhất, nhiều dịch vụ .net sử dụng lượng bộ nhớ lớn có xu hướng chấm dứt sau khi giải phóng bộ nhớ xảy ra đôi khi vài phút sau sự kiện dừng dịch vụ.
Erdogan Kurtur

3
Hehehe Visual Studio đã khóa DLL của tôi. Đóng Visual Studio và cố gắng xây dựng lại Giải pháp và nó đã hoạt động.
Leniel Maccaferri

Đây rõ ràng là một xung đột bộ nhớ. Một 'thể hiện' cụ thể của đối tượng có một số bộ nhớ bit được phân bổ, sau đó thấy rằng bộ nhớ (tĩnh?) Được phân bổ cho nó, đã được ánh xạ ở nơi khác, có thể có mức truy cập hệ thống khác.
ngerak

Câu trả lời:


177

Trong trường hợp của tôi, đó là Explorer đã khóa DLL được biên dịch trong thư mục Debug ... Lạ nhỉ, phải không?

Tôi phát hiện ra bằng cách sử dụng một công cụ gọi là Unlocker.

Phải xóa bằng Unlocker, ngay cả khi nó nói rằng không có khóa trên tệp và tôi không thể xóa thư mục cho đến khi tôi không xóa tệp đó ...

Sau đó nó biên soạn.

BIÊN TẬP:

Tôi đã tìm ra lý do tại sao trong trường hợp của tôi điều này đã xảy ra. Tôi đã mở DLL trong trình soạn thảo văn bản trong Visual Studio ...


33
Tôi đã mở dlo trong một trong nhiều cửa sổ phòng thu trực quan của tôi cũng mở. Cảm ơn đã đăng cập nhật đó.
ptfaulkner

3
Điều tương tự, bằng cách nào đó, DLL nguy hiểm đã được mở trong một cửa sổ văn bản trong trình soạn thảo.
Harvest

3
DLL mở như một tab trong VS quá! Cảm ơn bạn!
Connell

5
Tiết lộ đầy đủ: liên kết đến "Unlocker" là tổng số phần mềm gián điệp. Nó cài đặt tất cả các loại thanh công cụ và crap, ngay cả khi bạn bỏ chọn tất cả các hộp nói rằng bạn không muốn chúng.
Tim

7
Sử dụng Process Explorer Barsead của Unlocker. Khi PE đang chạy, hãy đi tới Tìm -> Tìm Xử lý hoặc dll và dán tên của tệp bị khóa. Nó sẽ hiển thị quá trình khóa nó. Giết nó nếu bạn chắc chắn rằng nó ổn để làm điều đó và vấn đề cần được giải quyết.
Nikita G.

71
  • Đôi khi, khi bạn nhấp đúp vào cảnh báo về phiên bản lắp ráp được tham chiếu không khớp giữa hai hoặc nhiều dự án, bạn quên đóng cửa sổ xem lắp ráp và nó vẫn ở đó giữa các tab khác ... vì vậy bạn kết thúc việc lắp ráp bị khóa bởi chính VS và tôi đã mất khá nhiều thời gian để tìm ra điều đó :)

    Hãy cẩn thận với sức mạnh mà VS cung cấp;)

  • Một kịch bản giả khác. Đôi khi chỉ cần xóa toàn bộ thư mục obj hoặc chỉ tập tin được cảnh báo là khóa bị khóa giúp khắc phục lỗi này.

2
đã sắp xếp nó cho tôi ... Tôi thậm chí đã khởi động lại hệ thống nhưng VS đã mở lại cửa sổ xem lắp ráp. Đóng tất cả các tab đã làm công việc. Chúc mừng
Dave Lawrence

35

đóng tất cả các tài liệu về VS và cố gắng xây dựng lại. Nếu nó không hoạt động, hãy khởi động lại VS. Vấn đề này liên quan đến khóa các tập tin DLL.


3
tương tự, một số điều kỳ lạ với VS. khởi động lại sắp xếp nó cho tôi.
PJUK

1
Điều này làm việc cho tôi. Điều kỳ lạ trong hoàn cảnh cụ thể của tôi. Tôi đã thực hiện độc lập exe của mình, bên ngoài môi trường VS. Để nó chạy qua đêm (kiểm tra bộ nhớ - nó đã qua), tắt nó vào buổi sáng, một vài thay đổi mã nhỏ và đột nhiên không thể hoàn thành bản dựng của tôi vì điều này. Thật kỳ lạ khi ký ức này dường như xung đột như thế này.
ngerak

Khó chịu, cảm ơn, một tài liệu mở đã gây ra lỗi, thưa BS!
Brian Ogden

"Đóng tất cả tài liệu" và xây dựng lại thực sự hiệu quả với tôi! : o
Antoine Meltzheim 24/8/2016

11

Đóng visual studio, xóa bin, thư mục phát hành gỡ lỗi và bắt đầu lại dự án studio visual. đã khắc phục vấn đề của tôi


Điều này làm việc cho tôi! Cảm ơn! Tôi đã đổi tên các thư mục, chỉ trong trường hợp và nó hoạt động.
DavidScherer


10

Tôi là nhà phát triển và không thích các ứng dụng được đưa vào Đăng ký như Unlocker. Tôi đã sử dụng SysIternals Process Explorer để xử lý khóa dll của tôi Find > Find Handle or Dll [Ctrl-F]và giết tiến trình.


1
Tìm thấy nó đã bị khóa bởi một quá trình VS không chết khi VS bị đóng.
Yoztastic

2
Ngay cả sau khi DevEnv bị đóng và Trình quản lý tác vụ không hiển thị, Process Explorer đã hiển thị một số trường hợp của DevEnv bị treo. Giết chúng và nó đã làm việc.
DeclanMcD

1
Đây là câu trả lời đúng nhất, vì nó chỉ ra cách tìm quá trình nào đang khóa tệp, thay vì chỉ nói "trong trường hợp của tôi là do X". Mọi nhà phát triển trên Windows sẽ được hưởng lợi từ việc thêm procexp và procmon vào toolbelt của họ!
Matt Wanchap

9

Những người khác đã xác định rằng lỗi này là do một ứng dụng khác có khóa trên tệp. Chỉ muốn chỉ ra rằng git diffkhóa các tập tin là tốt cho đến khi bạn thoát khỏi nó. Đó là những gì gây ra điều này trong trường hợp của tôi.


Vấn đề tương tự đối với tôi. Quên tôi đã không bỏ đi. Thật không may, tôi đã không thấy câu trả lời này cho đến khi tôi đóng một loạt các cửa sổ khác và thấy nó vẫn còn trong một khác biệt. Sau đó, đảm bảo rằng tôi đã không đăng một câu trả lời lừa đảo nên +1 :)
codeMagic

1
@codeMagic Git 2.23 (quý 3 năm 2019) sẽ tránh được cái bẫy đó. Xem câu trả lời của tôi dưới đây
VonC

9

Tôi gặp vấn đề tương tự. Làm thế nào tôi giải quyết nó là:

  1. Mở "Trình quản lý tác vụ"
  2. Kết thúc tác vụ "Explorer.exe"
  3. Nhấp vào "Tệp" -> Tạo tác vụ mới - Nhập vào "explorer.exe" -> OK
  4. Làm sạch dự án của tôi và nó hoạt động

Tôi cũng đã phải khởi động lại quá trình Explorer từ Trình quản lý tác vụ. Trong trường hợp của tôi, tôi đã xem tệp "có vấn đề" trong khu vực "Xem trước" của Explorer. Điều này dường như cũng khóa các tập tin theo thời gian mà không bao giờ phát hành chúng. Đóng tất cả các cửa sổ Explorer không giúp được gì. Phải khởi động lại quá trình.
gehho

Cuối cùng! Cảm ơn bạn.
TheJack

6

Bạn đang chạy bất kỳ phần mềm chống vi-rút. Có thể phần mềm AV (hoặc một số phần mềm khác) đang đọc tệp bằng API ánh xạ tệp gây ra sự cố.


6

Trong trường hợp của tôi, tôi đã phải giết một MSBuild.exequy trình treo đang khóa tệp (nó đã ở đó ngay cả sau khi tôi đóng Visual Studio).


1
Bạn đóng đinh nó. Cảm ơn rất nhiều!
Larry

4

Xóa thư mục obj và xây dựng lại làm việc cho tôi


3

Tôi đã từng gặp vấn đề tương tự. Khởi động lại không làm việc cho tôi. Có một quy trình gọi là VBSCompiler đang chạy trong trình quản lý tác vụ. Tôi đã phải kết thúc quá trình để sửa lỗi này.


Bạn cũng có thể làm sạch giải pháp của mình và thử lại
Nirjhar Vermani

3

Không có giải pháp nào được đăng ở đây làm việc cho tôi. Đó là devenv.exe (Visual Studio) đang khóa tệp, nhưng nếu tôi khởi động lại, nó sẽ khóa lại.

Thật kỳ lạ, Windows sẽ không cho phép tôi xóa các tệp (vào Thùng rác), nhưng Shift + Xóa (xóa vĩnh viễn) đã hoạt động.


2

Đóng Visual Studio và chạy nó với tư cách quản trị viên. Nó đã khắc phục vấn đề của tôi.


Tôi đã gặp lỗi này khi xây dựng một ứng dụng sáng bóng trong rstudio, vì vậy nhiều câu trả lời trong số này không hữu ích với tôi. Nhưng tôi đã thấy điều này và đã thử khởi động lại rstudio với tư cách quản trị viên, và nó đã hoạt động. Sau đó, khi tôi quay trở lại chạy như người dùng, nó hoạt động trở lại.
Paul

2

Giải pháp cho tôi là loại bỏ tất cả các phiên bản của VS và tiêu diệt mọi quá trình devenv.exe treo.


2

Giải pháp cho tôi là khởi động lại máy tính.


2

Andrew Cuthbert đã chỉ ra vào năm 2016 rằng git diff cũng khóa các tập tin cho đến khi bạn thoát khỏi nó.

Điều đó sẽ không xảy ra với Git 2.23 (quý 3 năm 2019)

Xem cam kết 3aef54e (ngày 11 tháng 7 năm 2019) của tác giả Julian Schindelin ( dscho) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết d9beb46 , ngày 25 tháng 7 năm 2019)

diff: munmap()nội dung tập tin trước khi chạy diff khác

Khi chạy một khác biệt bên ngoài từ, giả sử, a diff tool, có thể an toàn khi giả định rằng chúng tôi muốn viết các tệp trong câu hỏi.
Trên Windows, điều đó có nghĩa là không thể có bất kỳ quy trình nào khác đang xử lý mở đối với các tệp đã nói hoặc thậm chí chỉ là một vùng được ánh xạ.

Vì vậy, hãy đảm bảo rằng git diffchính nó không giữ bất kỳ xử lý mở nào đối với các tệp được đề cập.

Trên thực tế, chúng tôi sẽ chỉ phát hành cặp tệp ngay lập tức, vì khác biệt bên ngoài sử dụng các tệp chúng tôi vừa viết, vì vậy chúng tôi không cần phải giữ nội dung tệp trong bộ nhớ nữa.

Điều này sửa git-for-windows # 1315


1

Tôi đã thấy những lỗi này khi xây dựng các ứng dụng Dot Net với Ant.

Trong trường hợp của tôi, đó là phần mềm sao lưu công ty của chúng tôi, Symantec DLO Agent. Dừng nó và loại trừ thư mục trong phần mềm chống vi-rút của tôi và đóng Visual Studio dường như hoạt động.


1

trong trường hợp của tôi đã xóa thư mục obj trong dự án root và xây dựng lại dự án đã giải quyết vấn đề của tôi !!!


0

Tôi đã gặp lỗi này và hóa ra vấn đề là FxCop đang chạy chống lại dự án của tôi. Tôi đã đóng FxCop và sau đó tôi có thể biên dịch lại.


0

Nếu đó là một ứng dụng web xóa các tệp trong thư mục Tệp ASP.NET tạm thời có thể là một giải pháp.


0

Nếu bạn đang sử dụng các trình định dạng như AQ Time, chúng cũng có thể khóa tệp. Giải pháp trong trường hợp này là khởi động lại trình lược tả hoặc đơn giản là dỡ / tải cụm được đề cập từ trình lược tả. Đối với AQ Time tôi nhận thấy rằng nó sẽ phát hành tệp sau một thời gian, nhưng tôi không thể biết thời gian chờ đó là bao nhiêu. Có vẻ là ngẫu nhiên


0

Tôi cũng có lỗi tương tự ngày hôm nay. Tôi đã giải quyết vấn đề này bằng cách xây dựng lại dự án.


0

Tôi đã gặp lỗi này do 'thêm' so với tệp đang nghi vấn đang chạy trong bảng điều khiển khác. Giáo sư.


0

Không có điều nào ở trên giải quyết được vấn đề này.

Ai đó đã có một dự án trong giải pháp của tôi được thiết lập để sử dụng CPU x64 trong cấu hình xây dựng. Thay đổi nó thành Bất kỳ CPU nào khiến bản dựng sử dụng một thư mục mới. Tôi vẫn không biết quá trình nào đã có (có) khóa trên tệp đó.


0

Tôi đã có vấn đề tương tự . Tôi đã xóa dll khỏi thư mục tạm thời, xóa quyền truy cập chỉ đọc và khởi động lại máy và làm cho nó hoạt động.


0

Trong trường hợp của tôi, tôi chỉ cần đóng tất cả các thể hiện và sao chép thư mục ứng dụng gốc của mình và dán nó vào vị trí khác nhau sau đó mở giải pháp trong VS nó hoạt động ....


-1

Vấn đề của tôi cũng đã được giải quyết bằng cách chọn lọc thông qua Process Explorer. Tuy nhiên, quá trình tôi phải giết là MySQL Notifier.exe vẫn đang chạy sau khi đóng tất cả các ứng dụng VS và SQL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.