사용자가 매핑 한 섹션이 열린 파일에서 요청한 작업을 수행 할 수 없습니다.


210

기본 서비스를 중지 한 후 4 개의 파일을 bin 폴더에 복사하려고 할 때마다 하나의 파일 (TexteDll)에 오류가 발생합니다. 오류는 다음과 같습니다

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

시스템 잠금으로 인한 것일 수 있습니다. 또는 다른 프로세스가이 DLL을 사용 중일 수 있습니다. 내가봤을 때 시스템을 재부팅하면 문제가 해결 될 수 있음을 발견했습니다.

아무도 이것에 대한 원인이나 해결책을 제안 할 수 있습니까? TexteDll 속성 (일반, 버전, 보안 등)을 검사했습니다. 모든 것이 정상으로 보입니다.



8
실제로 질문에 더 많은 '중복'이 있습니다 (예 : stackoverflow.com/questions/1818076/…)- 문제는 근본 원인이 다를 때마다 다릅니다.
MaciekTalaska

6
다음에 Microsoft 사이트에서 "프로세스 탐색기"를 사용하십시오. "찾기 핸들"이라는 기능이 있습니다. 거기에서 파일을 검색하면 해당 파일을 처리하는 프로세스가 표시됩니다. 그런 다음 해당 프로그램에 액세스 권한이있는 이유를 조사 할 수 있습니다. BTW, 서비스를 중지한다고해서 반드시 서비스를 호스팅하는 실행 파일이 종료되는 것은 아닙니다. 실행 파일은 여러 서비스를 호스팅 할 수 있습니다. 최악의 경우, 대량의 메모리를 사용하는 많은 .net 서비스는 서비스 중지 이벤트 후 몇 분 후에 발생하는 메모리를 해제 한 후 종료되는 경향이 있습니다.
Erdogan Kurtur

3
Hehehe Visual Studio가 내 DLL을 잠그고있었습니다. Visual Studio를 닫고 솔루션을 다시 작성하려고 시도했습니다.
Leniel Maccaferri

이것은 분명히 메모리 충돌입니다. 객체의 특정 '인스턴스'에 일부 할당 된 비트 메모리가 매핑 된 후 나중에 할당 된 메모리 (정적으로?)가 다른 수준의 시스템 액세스로 이미 다른 곳에 매핑 된 것을 발견합니다.
ouflak

답변:


177

내 경우에는 디버그 폴더에 컴파일 된 DLL을 잠그는 탐색기였습니다 ... 이상하지 않습니까?

Unlocker라는 도구를 사용하여 알게되었습니다.

파일에 대한 잠금이 없다고 말했을 때에도 Unlocker로 삭제해야했으며 단일 파일을 삭제하지 않으면 폴더를 삭제할 수 없었습니다 ...

그 후 그것은 컴파일되었습니다.

편집하다:

제 경우에는 왜 이런 일이 발생했는지 알아 냈습니다. Visual Studio의 텍스트 편집기에서 DLL을 열었습니다 ...


33
나는 많은 Visual Studio 창 중 하나에서 dlo를 열었습니다. 해당 업데이트를 게시 해 주셔서 감사합니다.
ptfaulkner

3
똑같은 방법으로 편집 된 DLL이 편집기의 텍스트 창에서 열립니다.
Harv

3
VS에서도 DLL이 탭으로 열립니다! 감사합니다!
Connell

5
전체 공개 : "잠금 해제"링크는 전체 스파이웨어입니다. 원하지 않는 모든 상자의 선택을 취소하더라도 모든 종류의 도구 모음과 쓰레기를 설치합니다.
Tim

7
Unlocker를 펼친 Process Explorer를 사용하십시오 . PE가 실행되면 찾기-> 핸들 찾기 또는 Dll로 이동하여 잠긴 파일의 이름을 붙여 넣습니다. 어떤 프로세스가 잠겨 있는지 보여줍니다. 괜찮다면 문제를 해결하고 문제를 해결해야합니다.
Nikita G.

71
  • 때로는 두 개 이상의 프로젝트 사이에서 참조 된 어셈블리 버전 불일치에 대한 경고를 두 번 클릭하면 어셈블리 뷰 창을 닫는 것을 잊어 버리고 다른 탭 사이에 유지됩니다. 따라서 VS 자체에 의해 어셈블리가 잠기고 그것을 알아내는 데 꽤 많은 시간이 걸렸습니다. :)

    VS가 제공하는 힘에주의하십시오.)

  • 또 다른 더미 시나리오. 때로는 전체 obj 폴더를 삭제하거나 잠긴 파일 이이 crappy 오류를 해결하는 데 도움이되므로 파일을 경고합니다.

2
나를 위해 정렬했습니다 ... 심지어 시스템을 다시 시작했지만 VS는 어셈블리보기 창을 다시 열었습니다. 모든 탭을 닫으면 작업이 완료되었습니다. 건배
데이브 로렌스

35

VS의 모든 문서를 닫고 다시 빌드하십시오. 작동하지 않으면 VS를 다시 시작하십시오. 이 문제는 DLL 파일의 잠금과 관련이 있습니다.


3
VS의 경우도 마찬가지입니다. 다시 시작하여 분류했습니다.
PJUK

1
이것은 나를 위해 일했습니다. 나의 특별한 상황에서 이상한 것. VS 환경 외부에서 exe를 독립형으로 실행했습니다. 밤새 (메모리 테스트-통과) 실행하고 아침에 종료하고 몇 가지 작은 코드 변경이 있었기 때문에 갑자기 빌드를 완료 할 수 없었습니다. 이 기억이 어떻게 이런 식으로 충돌하는 것 같니.
ouflak

불쾌한, 감사합니다. 열린 문서로 인해 오류가 발생했습니다. BS!
Brian Ogden

"모든 문서를 닫고"다시 빌드하면 실제로 나를 위해 일했습니다! : o
앙투안 멜츠 하임

11

Visual Studio를 닫고 bin을 삭제하고 릴리스 폴더를 디버그 한 다음 Visual Studio 프로젝트를 다시 시작하십시오. 그게 내 문제를 해결했다.


이것은 나를 위해 일했다! 감사! 만약을 대비하여 디렉토리의 이름을 바꾸었고 효과가있었습니다.
DavidScherer


10

나는 개발자이며 Unlocker와 같은 Registery에 주입 된 앱을 좋아하지 않습니다. SysInternals Process Explorer 를 사용 Find > Find Handle or Dll [Ctrl-F]하여 프로세스가 내 dll을 잠그고 프로세스를 종료했습니다.


1
VS가 닫힐 때 죽지 않은 VS 프로세스에 의해 잠겨 있음을 발견했습니다.
Yoztastic

2
DevEnv가 닫히고 작업 관리자가이를 표시하지 않더라도 Process Explorer는 DevEnv Suspended의 여러 인스턴스를 표시했습니다. 이것들을 죽이면 효과가있었습니다.
DeclanMcD

1
이것은 "내 경우에는 X 때문"이라고 말하는 것이 아니라 파일을 잠그는 프로세스를 찾는 방법 을 보여 주기 때문에 가장 정답 입니다. Windows의 모든 개발자는 툴 벨트에 procexp와 procmon을 추가하는 것이 좋습니다!
Matt Wanchap

9

다른 사람들은 이미이 오류가 다른 응용 프로그램이 파일을 잠 갔기 때문에 발생한다는 것을 확인했습니다. git diff종료 할 때까지 파일 을 잠그는 것을 지적하고 싶었 습니다. 그것이 내 경우에 이것을 일으킨 원인입니다.


나에게도 같은 문제. 나는 diff를 끝내지 않았다는 것을 잊었다. 불행히도, 나는 다른 많은 창을 닫아서 여전히 diff에있는 것을 볼 때 까지이 대답을 보지 못했습니다. 그리고 확실히 내가 :) 그래서 일을 속는 답변을 게시되지 않은 만들고 있었다
codeMagic

1
@codeMagic Git 2.23 (Q3 2019)은 그 함정을 피할 것입니다. 아래 답변을
VonC

9

나는 같은 문제가 있었다. 내가 해결 한 방법은 다음과 같습니다.

  1. "작업 관리자"를여십시오
  2. 작업 종료 "Explorer.exe"
  3. "파일"을 클릭하십시오-> 새 작업 생성- "explorer.exe"를 입력하십시오-> 확인
  4. 내 프로젝트를 청소하면 작동합니다

또한 작업 관리자에서 탐색기 프로세스를 다시 시작해야했습니다. 필자의 경우, 탐색기의 "미리보기"영역에서 "문제점"파일을 보았습니다. 이것은 때때로 파일을 공개하지 않고 파일을 잠그는 것처럼 보입니다. 모든 탐색기 창을 닫아도 도움이되지 않았습니다. 프로세스를 다시 시작해야했습니다.
gehho 2019

드디어! 감사합니다.
TheJack

6

안티 바이러스 소프트웨어를 실행 중입니까? AV 소프트웨어 (또는 일부 다른 소프트웨어)가 파일 매핑 API를 사용하여 파일을 읽고 있었기 때문에 문제가 발생했을 수 있습니다.


6

필자의 경우 MSBuild.exe파일을 잠그는 교수형 프로세스를 종료해야했습니다 (Visual Studio를 닫은 후에도있었습니다).


1
니가 끝냈어. 고마워요!
Larry

4

obj 폴더를 삭제하고 다시 작성하면 효과가 있습니다.


3

나는 같은 문제가 있었다. 다시 시작하지 못했습니다. 작업 관리자에서 VBSCompiler라는 프로세스가 실행되고있었습니다. 이 오류를 해결하려면 프로세스를 종료해야했습니다.


당신은 또한 당신의 솔루션을 청소하고 다시 시도 할 수 있습니다
Nirjhar Vermani

3

여기에 게시 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 파일을 잠그는 devenv.exe (Visual Studio) 였지만 다시 시작하면 다시 잠글 것입니다.

기이하게도 Windows는 휴지통으로 파일을 삭제할 수는 없지만 Shift + Delete (영구 삭제)는 작동했습니다.


2

Visual Studio를 닫고 관리자 권한으로 실행하십시오. 내 문제가 해결되었습니다.


rstudio에서 반짝이는 앱을 빌드하는 동안이 오류가 발생하여 이러한 답변 중 많은 부분이 도움이되지 않았습니다. 그러나 나는 이것을 보았고 rstudio를 관리자로 다시 시작하려고 시도했지만 효과가있었습니다. 그런 다음 사용자로 다시 실행하면 다시 작동했습니다.
Paul

2

나를위한 해결책은 모든 VS 인스턴스를 닫고 매달려있는 devenv.exe 프로세스를 종료하는 것이 었습니다.


2

나를위한 해결책은 컴퓨터를 다시 시작하는 것이 었습니다.


2

그것은 된 지적 에 의해 2016 년 앤드류 커스버트 자식은 diff 잠금 파일은 당신이 그것을 밖으로 종료 잘 때까지 같은 것을.

Git 2.23 (2019 년 3 분기)에는 해당되지 않습니다.

Johannes Schindelin ( )의 commit 3aef54e (2019 년 7 월 11 일)를 참조하십시오 . ( Junio ​​C Hamano의해 병합 - 커밋 d9beb46 , 2019 년 7 월 25 일)dscho
gitster

diff: munmap() 외부 diff를 실행하기 전에 파일 내용

a에서 외부 diff를 실행할 때 diff tool문제의 파일을 작성한다고 가정하는 것이 안전합니다.
Windows에서 이는 해당 파일에 대한 열린 핸들을 유지하는 다른 프로세스 나 매핑 된 영역을 가질 수 없음을 의미합니다.

따라서 git diff문제의 파일에 대해 열린 핸들을 가지고 있지 않은지 확인하십시오 .

실제로 외부 diff가 방금 작성한 파일을 사용하므로 파일 쌍을 즉시 해제하므로 더 이상 파일 내용을 메모리에 보관할 필요가 없습니다.

이것은 git-for-windows # 1315를 수정합니다.


1

Ant로 Dot Net 애플리케이션을 빌드 할 때 이러한 오류가 발생했습니다.

제 경우에는 회사 백업 소프트웨어 인 Symantec DLO Agent였습니다. 바이러스 백신 소프트웨어에서 디렉토리를 제외하고 디렉토리를 제외하고 Visual Studio를 닫는 것이 작동하는 것 같습니다.


1

내 경우에는 프로젝트 루트에서 obj 폴더를 삭제하고 프로젝트를 다시 빌드하면 내 문제가 해결되었습니다!


0

이 오류가 발생하여 프로젝트에 대해 FxCop이 실행되고있는 것으로 나타났습니다. FxCop을 닫은 후 다시 컴파일 할 수있었습니다.


0

Temporary ASP.NET Files 폴더에서 파일을 삭제하는 웹 응용 프로그램이라면 해결책이 될 수 있습니다.


0

AQ Time과 같은 프로파일 러를 사용하는 경우 파일이 잠길 수도 있습니다. 이 경우 해결 방법은 프로파일 러를 다시 시작하거나 프로파일 러에서 해당 어셈블리를 언로드 /로드하는 것입니다. AQ Time의 경우 파일이 얼마 후에 릴리스 된 것을 알았지 만 인생의 시간 초과가 무엇인지 말할 수는 없습니다. 무작위로 보인다



0

이 오류는 'more'대 문제의 파일이 다른 콘솔에서 계속 실행되어 발생했습니다. 죄송합니다.


0

위의 어느 것도이 문제를 해결하지 못했습니다.

누군가 내 솔루션에 빌드 구성에서 x64 CPU를 사용하도록 설정된 하나의 프로젝트가 있습니다. CPU로 변경하면 빌드에서 새 폴더를 사용했습니다. 나는 아직도 어떤 프로세스가 그 파일에 잠금을 가지고 있는지 알지 못한다.


0

나는이 같은 문제가 있었다. 임시 폴더에서 dll을 제거하고 읽기 전용 액세스 권한을 제거하고 컴퓨터를 다시 시작하여 작동 시켰습니다.


0

필자의 경우 모든 인스턴스를 닫고 루트 응용 프로그램 폴더를 복사하여 다른 위치에 붙여 넣은 다음 VS에서 솔루션을 엽니 다.


-1

내 문제는 프로세스 탐색기를 통해 선별하여 해결되었습니다. 그러나 내가 죽여야하는 프로세스는 모든 VS 및 SQL 응용 프로그램을 닫은 후에도 여전히 실행중인 MySQL Notifier.exe였습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.