[visual-studio] 오류 : 파일 bin / Debug /…에 액세스 할 수 없습니다. 다른 프로세스에서 사용 중이기 때문입니다.

프로젝트를 디버깅 할 때 다음 오류가 발생합니다.

“”obj \ Debug \ My Dream.exe “파일을”bin \ Debug \ My Dream.exe “로 복사 할 수 없습니다. 다른 사용자가 사용 중이기 때문에 프로세스에서 ‘bin \ Debug \ My Dream.exe’파일에 액세스 할 수 없습니다. 방법.”

Process Explorer를 사용하면 MyApplication.exe가 나왔지만 이전에 디버그를 중지했지만 시스템 프로세스에서 여전히 사용합니다. 내 코드를 변경하고 디버그를 시작할 때마다 발생합니다. 프로젝트를 USB에 복사하고 디버그하면 정상적으로 실행됩니다.

왜? 이 오류를 어떻게 수정할 수 있습니까?

저는 Window 7 Professional을 사용합니다. Xp에서는이 오류가 발생하지 않았습니다.



답변

어, 이것은 오래된 문제이며 Visual Studio에서 가끔씩 나타나는 문제입니다. 그것은 나를 몇 번 물었고 VS와 다시 시작하고 싸우는 데 몇 시간을 낭비했습니다. 나는 그것이 두 번 이상 여기에서 논의되었다고 확신합니다. MSDN 포럼에서도 논의되었습니다. 실제 솔루션은 없지만 몇 가지 해결 방법이 있습니다. 여기에서 조사를 시작하십시오 .

무슨 일이 일어나고 있는지 VS가 파일에 대한 잠금을 획득 한 다음 해제하지 않는 것입니다. 아이러니하게도이 잠금은 VS 자체가 파일을 삭제하는 것을 방지하므로 응용 프로그램을 다시 빌드 할 때 파일을 다시 만들 수 있습니다. 유일한 해결책은 VS를 닫고 다시 시작하여 파일에 대한 잠금을 해제하는 것입니다.

내 원래 해결 방법은 bin / Debug 폴더를 열고 실행 파일의 이름을 바꾸는 것이 었습니다. 잠겨있는 경우 삭제할 수 없지만 이름을 바꿀 수 있습니다. 따라서 끝에 숫자 만 추가하면 모든 창을 닫고 VS가 다시 시작될 때까지 기다릴 필요없이 계속 작업 할 수 있습니다. 어떤 사람들은 이전 출력 파일 이름 끝에 임의의 문자열을 추가하기 위해 사전 빌드 이벤트사용하여이를 자동화했습니다 . 예, 이것은 거대한 해킹이지만이 문제는 너무 실망스럽고 쇠약 해져서 무엇이든 할 수 있습니다.

좀 더 많은 실험을 한 후에 디자이너 중 한 명이 열려있는 상태에서 프로젝트를 빌드 할 때만 문제가 발생하는 것 같다는 것을 나중에 알게되었습니다. 따라서 장기적으로 저에게 효과가 있었고 이러한 어리석은 오류 중 하나를 다시 처리하지 못하게 한 솔루션은 WinForms 프로젝트를 빌드하기 전에 항상 모든 디자이너 창을 닫는 것입니다. 예, 이것도 다소 불편하지만 VS를 한 시간에 두 번 이상 다시 시작해야하는 바지보다 확실히 낫습니다.

나는 이것을 사용하지 않고 개인적으로 거기에서 문제를 경험하지 않았지만 이것이 WPF에도 적용된다고 가정합니다.

나는 또한 아직 VS 2012 RC에서 그것을 재현하려고 시도하지 않았습니다. 아직 거기에서 고쳐 졌는지 아닌지는 모르겠습니다. 그러나 지금까지 내 경험에 따르면 Microsoft가 수정했다고 주장한 후에도 여전히 팝업이 나타납니다. VS 2010 SP1에도 여전히 있습니다. 물론 프로그래머가 자신이 무엇을하는지 모르는 바보라고 말하는 것은 아닙니다. 버그에 대한 원인은 여러 가지 뿐이며 실험실에서 안정적으로 재현하기가 매우 어렵다고 생각합니다. 그것은 내가 개인적으로 버그 보고서를 제출하지 않은 것과 같은 이유입니다 (나는 다른 사람들을 +1 했음에도 불구하고).

<특별히 누구에게도 향하지 않는 최후의 폭언>


답변

이전에 Visual Studio 2008에서도이 오류가 발생했습니다. Visual Studio 2012에서 더 많이 발생했습니다.

여기 내가하는 일이 있습니다.

번거로운 프로젝트의 빌드 전 이벤트에 이것을 붙여 넣으십시오.

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"


답변

컴퓨터 (오른쪽 클릭)-> 관리-> 서비스 및 응용 프로그램-> 서비스-> 응용 프로그램 경험 활성화

나를 위해 일했습니다!


답변

Visual Studio 2013에서 동일한 문제가 발생했습니다. 내 프로젝트에서이 문제의 원인은 확실하지 않지만 솔루션을 정리하고 다시 빌드하여 해결할 수있었습니다.

  1. 빌드> 클린 솔루션
  2. 빌드> 솔루션 다시 빌드

답변

적어도 제 경우에는 Visual Studio 2012가 빌드 후 사라지지 않는 msbuild.exe 고스트 프로세스를 두 개 이상 생성하고 있다는 사실을 알게되었습니다. 이 좀비들은 분명히 파일 잠금을 일으키고 있습니다.

msbuild.exe를 죽이는 것은 일회성 솔루션이며 빌드 단위로 수행해야합니다.

하지만 병렬 빌드를 한 번에 비활성화 할 수 있다는 것을 알아 냈습니다. 도구> 옵션> 프로젝트 및 솔루션> 빌드 및 실행> “최대 병렬 프로젝트 빌드 수”로 이동했습니다. 기본적으로 값은 8입니다. 1로 전환했습니다. 매력처럼 작동합니다.

물론 빌드는 이제 조금 느리지 만 후회하는 것보다 더 안전합니다. 적어도이 작은 프로젝트에서는 하나 이상의 빌드 스레드가 필요하지 않았습니다.


답변

나는 이것이 오래된 질문이라는 것을 이해합니다. 불행히도 .NET .net core 2.0에서 내 응용 프로그램 과 동일한 문제에 직면 했습니다 visual studio 2017. 그래서 나는 나를 위해 일한 솔루션을 공유하려고 생각했습니다. 이 솔루션 전에 아래 단계를 시도했습니다.

  1. 다시 시작된 Visual Studio
  2. 모든 응용 프로그램을 닫았습니다.
  3. 내 솔루션을 정리하고 다시 빌드

위 단계 중 어느 것도 문제를 해결하지 못했습니다.

그런 다음 내 Task Manager및 선택한 dotnet프로세스를 열고 작업 끝내기 버튼을 클릭했습니다. 나중에 Visual Studio를 열었고 모든 것이 잘 작동했습니다.

여기에 이미지 설명 입력


답변

단위 테스트를 실행하는 동안이 문제가 발생하면 여기 내 대답을 참조하십시오 . 아래에 복사 된 답변 :

Sébastien의 답변을 바탕으로 테스트 프로젝트에 사전 빌드 단계를 추가하여 vstest.*아직 실행중인 실행 파일 을 자동으로 종료했습니다 . 다음 사전 빌드 명령이 저에게 효과적이었습니다.

taskkill /f /im vstest.*
exit 0

exit 0명령은 없을 때 빌드 실패를 방지하기 위해 끝에 vstest.*실행되는 실행 파일.