빌드 오류 : "다른 프로세스에서 사용 중이므로 프로세스가 파일에 액세스 할 수 없습니다."


91

저는 C # webforms앱을 가지고 있는데 , 오늘까지 그냥 수영으로 작동했습니다.

이제 오늘 갑자기 앱을 실행하려고 할 때마다 파일 잠금 오류가 발생합니다.

"obj \ Debug \ MyProject.exe"파일을 "bin \ Debug \ MyProject.exe"에 복사 할 수 없습니다. 다른 프로세스에서 사용 중이므로 "bin \ Debug \ MyProject.exe"파일에 액세스 할 수 없습니다.

인터넷 검색 오류는 명백한 것 이상으로 나오지 않습니다. 즉, VS는 파일이 잠겨 있다고 생각합니다. 그리고 VS를 닫고 다시 열면 프로젝트가 처음으로 잘 실행되기 때문에 파일을 잠그는 것은 확실히 Visual Studio 자체입니다. 두 번째로 실행하려고하면 파일 잠금 오류가 발생합니다.

앱을 실행하고 싶을 때마다 VS를 닫고 다시 여는 것은 실행 가능한 해결 방법이 아닙니다! 파일을 잠근 항목을 확인하고 파일이 잠기지 않도록하려면 어떻게합니까?

편집 : 또 다른 흥미로운 발견 : 앱을 실행할 필요조차 없습니다. 한 번만 컴파일하면 파일 잠금이 발생합니다. 두 번 연속 컴파일 할 수 없습니다!

이 문제는 내 솔루션의 한 프로젝트에만 해당됩니다. 다른 모든 프로젝트는 잘 작동하며 원하는만큼 여러 번 실행할 수 있습니다. 잠긴 것은이 하나의 프로젝트뿐입니다.


도움이되는지 확인하기 위해 vshost.exe를 죽일 수 있습니까?
rene

@rene-vshost.exe 프로세스가 없습니다. VS 2010에서 이름을 바꿨나요?
Shaul Behr

[앱 이름] .vshost.exe
rene

@rene - 아니, 그 이름하여 현재 프로세스의 최대 아무것도 쇼
사울 인 Behr

1
@Shaul 양식에 사용자 지정 사용자 컨트롤을 추가 했습니까? 실행하기 전에 디자이너를 닫으십시오. stackoverflow.com/questions/2690119/…
rene

답변:


134

저에게 맞는 간단한 해결책을 찾았습니다. 다음과 같이 진행됩니다.

문제가 발생하면 맨 위에있는 건물 구성을 변경하고 (“Release”에서“Debug”로 또는 그 반대로) 빌드 한 다음 이전 구성으로 다시 변경하고 다시 빌드하십시오.

스크린 샷

구성을 변경하면 vcshost와 devenv가 해제된다고 가정합니다.


2
최고의 답변, IMO. (그는 자신에게 cred하게했다 아 -.)
제이슨 P Sallinger

이것은 훌륭한 해결 방법입니다! 때로는 어떤 이유로 (?) 작동하지 않습니다.
Christopher D. Emerson

3
@ChrisEmerson 저도 알아 차 렸습니다. 릴리스로 전환하여 앱을 빌드하고 실행할 수 있지만 디버그로 다시 전환 한 후에도 프로젝트를 빌드 할 수 없습니다.
Zack

어셈블리를 제거하려면 Visual Studio를 다시 시작해야했습니다. IIS와 위의 솔루션을 재설정하려고했지만 여전히 C : \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL 폴더에있는 dll 파일을 볼 수 있습니다
Weihui Guo

1
이것은 정확히 한 번 작동했지만 다시는 작동하지 않았습니다. VS를 다시 시작한 후에도 아닙니다. 릴리스와 디버그간에 아무리 전환해도 실패합니다.
Frank H.

24

글쎄, 나는 스스로 문제를 해결했다. 아직 이유는 모르겠지만. 프로젝트에서 모든 파일을 제거한 다음 다시 추가하고 어떤 파일이 문제의 원인인지 확인하여 문제를 격리하기로 결정했습니다. 그래서 하나씩 파일을 프로젝트에 다시 도입하고 각 단계를 컴파일하고 정리했습니다 ... 때까지 ... 마지막 파일을 추가했습니다 ...

... 그리고 모든 것이 여전히 잘 작동했습니다.

원래 .csproj의 소스 컨트롤과 비교했습니다. 실제 차이는 없습니다. 그리고 .csproj의 이전 버전으로 되돌리려 고했지만 여전히 작동했습니다.

마법. 그것이 효과가 있다면 때로는 이유를 묻지 않는 것이 좋습니다. 그냥 받아들이고 계속 진행하십시오.

편집 : 문제는 되풀이되는 문제이며 컴파일 타임에 양식 디자이너가 추상 / 일반 양식을 열었을 때 문제를 분리했다고 생각합니다.

교훈 : 컴파일하기 전에 추상 또는 일반 양식 또는 컨트롤의 양식 디자이너가 닫혀 있는지 확인하십시오! 그렇지 않다면 VS를 닫고 다시 열어야합니다!


1
문제가있는 파일이 제거 된 이후 어떤 프로세스에서든 더 이상 액세스되지 않았기 때문일 수 있습니다. 모든 파일을 제거하면 실제로 해결해야합니다. 좋은 생각입니다.
Jeff LaFay

2
이것은 명령 줄 전용 프로젝트 (양식 없음)에서 여전히 발생하므로 실제로 어떤 작업을 수행하고 있는지 확신 할 수 없습니다.
Zack

16

여기서 발견 한 내용은 다음과 같습니다. 프로젝트 속성 페이지의 디버그 탭에서 "Visual Studio 호스팅 프로세스 활성화"를 선택 취소합니다. 이 속성이 무엇인지 확실하지 않지만 한 번 확인하지 않으면 작업이 수행됩니다.


4
문제는 해결되지만 Console.WriteLine ()은 더 이상 출력 창에 문자열을 출력하지 않습니다.
Pierre Fournier 2015

2
콘솔 앱에서 체크 박스를 선택 취소 한 후에도 문제가 지속됩니다.
Zack

2
Windows 클라이언트 프로젝트에서 저에게 효과적입니다. 상자를 선택 취소하고 성공적으로 빌드 한 다음 다시 확인하고 성공적으로 빌드했습니다.
Fei-Xue

1
나를 위해 일하지 않습니다. 이제 앱 자체가 잠겼습니다. 호스트 앱이 아닙니다.
Boris Ivanov

9

실제로 "Visual Studio 호스팅 프로세스 활성화"를 선택해야합니다. 어쨌든 적어도 VS2010의 경우. 또한 다음이 있습니다.

존재하는 경우 "$ (TargetPath) .locked"del "$ (TargetPath) .locked"존재하는 경우 "$ (TargetPath)"존재하지 않는 경우 "$ (TargetPath) .locked"move "$ (TargetPath)" "$ (TargetPath) .locked "

사전 빌드 옵션에서. 이 문제는 오랫동안 저를 괴롭 혔습니다. John W.가이 확인란을 언급 할 때까지는이 확인란이 존재하고 낮다는 사실을 알아 차렸고 이미 선택 취소 된 것입니다.

또한 -app-vshost.exe는 디버깅하지 않을 때에도 백그라운드에서 실행됩니다. 이것이 내가 추측 할 때마다 성공적으로 빌드하고 실행하는 이유입니다. 이전에는 실행되지 않았습니다. 또한 디버그 및 릴리스 폴더를 정리하고 대상 유형을 지속적으로 변경하려고 시도했지만 위에서 설명한 것 외에는 아무것도 작동하지 않았습니다. 이전에 내 해결책은 빌드 사이에 5 분만 기다리는 것이 었는데, 작업을 완료하는 데 매우 성 가시고 시간이 많이 소요되었습니다. 나는 어떤 탭이 열려 있는지 또는 XNA 대 Windows가 형성되는지 또는 디자이너가 열리는지가 중요한 행동의 변화를 보지 못했습니다. 이 문제는 32 비트 또는 64 비트 빌드에서 발생했으며 ALT-F4로 앱을 종료했는지 아니면 작업 관리자로 종료했는지에 상관없이 이론적으로 앱이 리소스를 닫거나 해제하는 것을 허용하지 않습니다. 처음에는 쓰레기 수거 문제라고 생각했습니다.


여기에있는 사전 빌드 이벤트 스크립트가 마침내이 문제를 해결했습니다. 감사합니다!
Christopher D. Emerson

이것은 나를 위해 어떤 일을 해본 유일한 주석이었습니다. 그런 간단한 문제가 패치없이 수년 동안 계속 존재한다는 것을 믿을 수 없었습니다.
ConstantineK

7

VS2017-Windows 작업 관리자에서 MSBuild.exe의 모든 인스턴스를 닫아 해결됨


5

조금 늦었지만 프로젝트 속성> "디버그"탭으로 이동하여 "Visual Studio 호스팅 프로세스 활성화"를 선택 취소하여이 문제를 해결합니다.


5

Windows 탐색기를 사용하여 잠긴 파일의 이름을 변경하여이 문제를 극복했습니다. 파일을 삭제할 수 없었지만 잠긴 파일의 이름을 바꾸면 작동합니다!


이것은 지금까지 나를 위해 일한 유일한 솔루션이었습니다. 훌륭한 솔루션입니다. 재부팅의 수고를 덜어줍니다.
JHubbard80

이것을 사전 빌드로 갖는 것이 좋을 것입니다. 나는 항상이 문제가 있습니다! 너무 짜증나.
Shimmy Weitzhandler

4

bin \ Debug 폴더를 삭제하고 가능하면 VS를 다시 시작하여이 문제를 해결했습니다.


문제는 매번 이것을 할 수 없다는 것입니다. 저에게는 다시 빌드하고 앱을 실행하려고 할 때마다 오류가 발생합니다.
FrenkyB

2

저에게는 설치되고 실행되는 Windows 서비스였습니다. 중지하면 빌드가 성공했습니다.


2

실행 상자에서 다음 명령을 실행합니다.

net stop iisadmin /y

그리고

iisreset

나를 위해 일했습니다. 2003 년 대비


1

최근에 내가 작업중인 솔루션을 구축하려고 할 때이 문제가 발생했습니다 (단지 winforms proj가 아닙니다). 실패
외에도 build프로젝트 정리가 조용히 실패하고 (bin 폴더를 확인하면 파일이 실제로 지워지지 않은 것으로 표시됨) Visual Studio를 닫아도 devenv프로세스가 종료되지 않고 충돌이 발생하는 것으로 나타났습니다. Windows 복구 프로세스는 Visual Studio를 다시 시작합니다.

몇 번의 시행 착오 끝에 VS 시작시 "최근"메뉴에서 솔루션을 열 때만 문제가 발생한다는 것을 알았습니다.
솔루션을 열면 File >> Open >> Project/Solution일반적으로 작동하는 것으로 나타났습니다.

현재는 이유를 알 수 없습니다. 계속해서이 문제를 조사 할 것입니다.하지만 지금은 적어도 저는 일할 수 있습니다!


1

참조를 확인하고 프로젝트에 대한 자체 참조를 제거하십시오.

설명 : 내 문제는 사용자 정의 제어를 작성하고 설계 양식에서 사용하기 위해 도구 상자 팔레트로 끌어서 놓은 후 시작되었습니다. 처음에는 사용자 지정 컨트롤 소스 파일 (.cs)과 프로젝트 실행 파일 (.exe) 사이에 중복이 있다는 경고가 나타났습니다. 실행 / 디버깅시 오류가 표시되었습니다. (.exe)가 사용되고 있기 때문에 액세스 할 수 없습니다 (그리고 사실임).

사용자 지정 컨트롤과 관련된 전체 소스 코드를 문자 그대로 제거했지만 참조를 확인하고 이전 사용자 지정 컨트롤을 "사용할 수 있도록"자체 참조 할 때까지 문제는 여전히 남아 있습니다. 참조를 제거하고 완료했습니다 !!


1

Visual Studio의 Xamarin 응용 프로그램에서 동일한 문제가 발생했으며 테스트 모바일 장치를 분리하여 해결되었습니다. 응용 프로그램이 닫히고 디버거가 중지되었지만 솔루션을 빌드하거나 다시 빌드하려고 할 때 오류가 계속 발생했습니다. 전화를 받아야했기 때문에 장치의 플러그를 뽑은 후에야 멈췄습니다.


1

내 2 센트를 던지려고. 내 문제는 작업 관리자를 열고 응용 프로그램을 종료하여 해결되었습니다. 전혀 실행 중이라는 표시없이 백그라운드에서 실행 중이었지만 (작업 표시 줄에 항목 없음, UI 없음, 아무것도 없음) 왜 이런 일이 발생했는지 잘 모르겠습니다. 분명히 디버거가 실행되지 않았고 당시에는 VS의 단일 인스턴스 만 열렸습니다. 이것이 이번 VS 2017에서 여전히 일어나고 있다는 것이 놀랍습니다.

아마도 백그라운드에서 실행중인 애플리케이션을 찾아 새 애플리케이션을 시작하기 전에 종료하는 빌드 단계를 추가 할 수 있습니다.


1

나는 같은 문제가 있었고 이전 답변에서 언급 한 방법을 사용하여 수정할 수 없었습니다. 작업 관리자에서 "SSIS 디버그 히 스트 (32 비트)"의 모든 인스턴스를 종료하고 이제 정상적으로 작동하여 문제를 해결했습니다.


1

.NET 프로젝트의 Obj, 소매 및 디버그 폴더를 삭제하고 다시 빌드하는 것이 저에게 효과적이었습니다.


0

웹 앱은 어떻게 구성되어 있습니까? Cassini (트레이 웹 서버) 또는 IIS에서 실행됩니까?

그러나 이것은 정상적으로 발생해서는 안됩니다. ProcessExplorer가 프로세스가 잠근 파일을 알려줄 수 있다고 생각합니다. 탐색기를 처리하지 않으면 다른 sysinternals 도구 중 하나.

SI 도구 중 하나를 다운로드하기 전에 시도해야 할 한 가지는 Cassini 웹 서버를 중지하고 파일이 해제되는지 확인하는 것입니다.


웹 앱이 아닙니다. 그것은 winforms입니다.
Shaul Behr

3
아, 그러면 "C # 웹 양식 앱이 있습니다 ..."로 시작하면서 질문을 편집 할 수 있습니다.
Andy

0

나를 위해 일한 것은 IIS를 다시 시작하는 것입니다.


0

나도 같은 문제가 있었다. 디버그 / 릴리스 구성을 변경하는 것은 트릭을 수행하지 않았습니다. 적어도 그 사이에 건물 없이는.

내 솔루션 (winform)에서는 디자이너에서 winform의 메인 폼을 열어 해결되었습니다. 코드로 전환 (F7). 그런 다음 코드를 닫고 winform의 디자이너를 닫고 모두 다시 빌드합니다 (ctrl-shift-B). 이것은 나를 위해 일했습니다.

백그라운드 작업자를 실행하는 winform 앱 내에서 일종의 핸들이 여전히 사용 된 다른 라이브러리 중 일부에 파일 핸들을 가지고있는 것처럼 보입니다.


0

두 개의 Visual Studio 인스턴스가 동일한 솔루션을 열었습니다.


0

제 경우에는 몇 가지 vstest 프로세스가 실행 중이었습니다 (다양한 이름을 사용하지만 모두 vstest 문자열을 포함). 나는 그들을 taskmgr에서 종료해야했다.



0

프로세스를 끝냈을 때 .Net Core Host 모든 것이 잘 구축되었습니다. Visual Studio를 닫거나 다른 것을 변경할 필요가 없습니다.


0

Docker를 사용하여 VS에서 개발하는 경우 Windows 서비스 용 Docker를 다시 시작하면 문제가 즉시 해결됩니다.

docker를 다시 시작하기 전에 언급 된 모든 답변을 시도했지만 msbuild.exe 프로세스가 실행중인 것을 찾지 못했고 사용하지 않고 VS를 다시 시작하려고 시도했지만 docker 다시 시작 만 작동했습니다.


0

한 가지 더 해결책 : 파일이 잠기면 괄호 안에 ID가있는 차단 프로세스 (예 : "ServiceHub.Host.CLR.x64 (7764)")가보고됩니다. 프로세스를 제거하려면 PowerShell (x + Win + I)을 열고 "Stop-Process -Id idNumber"를 입력합니다.


0

최근에 Service Fabric에 배포 할 때 문제가 발생했습니다. 이 오류는 '파일'이 사용 중임을 의미하지만 다른 IDE에서 포트를 사용하고 있음을 발견했습니다. 이미 포트에서 호스팅하고있는 실행중인 서비스를 중지함으로써이 예외가 발생하는 것을 중지 할 수있었습니다.


0

나는 같은 문제에 직면했다. 위에 나열된 여러 솔루션을 시도했지만 작동하지 않았습니다.

서버 탐색기에서 연결을 닫고 Visual Studio에서 열려 있던 모든 탭을 닫아이 문제를 해결했습니다.


0

이것이 SSIS 프로젝트 인 경우 작업 관리자를 열고 잠긴 파일을 해제해야하는 DtsDebugHost.exe의 모든 인스턴스를 종료합니다.


0

Visual Studio Code를 사용하는데 개발 서버가 실행 중이었기 때문에이 오류가 발생했습니다 (키를 눌러 개발 서버를 실행했습니다 Ctrl + F5).

따라서 중지 신호를 클릭하여 중지하고 오류가 사라졌습니다.


0

나는이 문제가 있었다 (그리고 VS뿐만 아니라 다른 곳에서도 본 문제).

Dropbox (제 경우)로 인해 발생합니다. 일부 코드를 편집하고 실행을 치면 때때로 dropbox가 파일을 즉시 잠그므로 처리 할 수 ​​있습니다.

해결 방법 1. 다시 실행을 누르십시오.

해결 방법 2. 보관 용 계정을 일시 중지합니다. (드롭 박스를 클라우드 백업으로 사용하는 경우 좋지 않음)

해결 방법 3. 보관함 동기화 목록에서 빌드 폴더를 제거합니다.

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