빌드 후 이벤트에 익숙하지 않기 때문에 프로그램에서 무엇이 잘못되었는지 약간 혼란 스럽습니다. Visual Studio 2010에서 컴파일 할 때 다음을 얻습니다.
The command "xcopy C:\Users\Me\Path\Foo.bar\Library\dsoframer.ocx C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\Foo.bar\ApplicationFiles C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\url\ C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
rmdir /S /Q C:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4.
이 오류에도 불구하고 프로그램 은 정상적으로 실행되는 것처럼 보이지만이 문제를 무시하고 나쁜 일이 발생하지 않기를 바랍니다. 이상하게도이 줄은 단일 명령 (첫 번째 xcopy)으로 시작되었지만 프로젝트를 계속 컴파일 (다른 문제, 대부분 참조)하는 동안 오류 메시지가 점점 더 커졌습니다. 무슨 일이 일어나고 있는지 아십니까?
편집 : 실패한 것처럼 보이는 빌드 후 이벤트는 다음과 같습니다.
xcopy $(ProjectDir)Library\dsoframer.ocx $(TargetDir) /Y /E /D
xcopy $(ProjectDir)ApplicationFiles $(TargetDir) /Y /E /D
xcopy $(SolutionDir)com.myUrl.gwt\www $(TargetDir) /Y /E /D
rmdir /S /Q $(TargetDir).gwt-tmp
답변
Xcopy 종료 코드 4는 ” 초기화 오류가 발생했습니다. 메모리 나 디스크 공간이 충분하지 않거나 명령 줄에 잘못된 드라이브 이름이나 잘못된 구문을 입력했습니다. “를 의미 합니다.
Visual Studio가 xcopy에 잘못된 인수를 제공하는 것 같습니다. 를 통해 빌드 후 이벤트 명령을 확인하십시오 Project > Right Click > Properties > Build Events > Post Build Event
.
경우주의 $(ProjectDir)
또는 유사한 매크로 측면 확장 결과 경로에 공백을, 그들은 필요한 큰 따옴표로 포장합니다. 예를 들면 :
xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
답변
감시 탭을 “출력”으로 전환하고 xcopy 명령을 찾습니다. 때때로 여기에서 문제를 해결하는 데 도움이 될 수있는 더 많은 메시지 (실제 xcopy 출력)를 찾을 수 있습니다. 출력 탭이 보이지 않으면보기-출력 메뉴를 사용하여 표시하십시오.
답변
수락 된 답변 외에도 대상 폴더가 읽기 전용 인 경우에도 오류가 발생할 수 있습니다 (TFS 사용시 공통)
답변
소스 파일을 찾을 수없는 경우 xcopy 는 오류 코드 4 도 반환합니다 .
답변
xcopy 명령이 읽기 전용 파일을 덮어 쓰려고 할 때 ‘ exited with code 4 ‘오류를 받았습니다 . xcopy 명령에 / R 을 추가하여이 문제를 해결했습니다 . / R을 나타냅니다 읽기 전용 파일을 덮어 쓰기해야한다
이전 명령 :
XCOPY /E /Y "$(ProjectDir)source file" "destination"
새로운 명령
XCOPY /E /Y /R "$(ProjectDir)source file" "destination"
답변
다른 답변에서 설명했듯이 종료 코드 4 에는 많은 원인이있을 수 있습니다.
결과 경로 이름이 최대 허용 길이를 초과 하는 경우를 발견 했습니다 ( 여기 처럼 ).
영향을받는 빌드 후 이벤트에 대해 xcopy를 robocopy로 대체했습니다. robocopy는 경로를 약간 다르게 처리하는 것으로 보이며 xcopy가 처리 할 수없는 복사 작업을 완료 할 수있었습니다.
답변
의미 :
초기화 오류가 발생했습니다. 메모리 또는 디스크 공간이 충분하지 않거나 명령 줄에 잘못된 드라이브 이름 또는 잘못된 구문을 입력했습니다.
그래서 기본적으로 그것은 무엇이든 될 수 있습니다. 명령 프롬프트에서 한 번에 하나씩 명령을 실행하여 어떤 명령이 문제를 일으키는 지 파악하십시오.