빌드 후 이벤트가있는 프로젝트가 있습니다.
copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe $(TargetDir)
내 컴퓨터에서 매번 잘 작동합니다. 항상 “코드 1로 종료”오류가 발생하는 새 개발자가 있습니다. 나는 그녀에게 DOS 프롬프트에서 동일한 명령을 실행하게했고 잘 작동했습니다. 원인은 무엇입니까? 실제 오류에 도달 할 수있는 방법이 있습니까?
우리는 둘 다 Visual Studio 2008을 사용하고 있습니다.
답변
경로의 폴더 이름 중 하나에 공백이 있었고 그 주위에 따옴표가 없었습니다.
답변
“핑”이있는 사람이 저를 도왔습니다 … 그러나 조금 더 잘 설명 될 수 있습니다 …
저에게 해결책은 다음과 같습니다.
copy $(TargetDir)$(TargetName).* $(SolutionDir)bin
이에:
copy "$(TargetDir)$(TargetName).*" "$(SolutionDir)bin"
그것이 당신을 위해 작동하기를 바랍니다. 🙂
답변
이것은 꽤 활발한 질문이기 때문에 미래의 방문객을 위해 이것을 추가했습니다.
ROBOCOPY는 8 미만의 “성공 코드”로 종료됩니다. 참조 : http://support.microsoft.com/kb/954404
이는 다음을 의미합니다.
robocopy exit code 0 = no files copied
robocopy exit code 1 = files copied
When the result is 1, this becomes an error exit code in visual studio.
그래서 이것을 배치 파일의 맨 아래에 추가하여 쉽게 해결했습니다.
exit 0
이 방식으로 ROBOCOPY 오류를 처리하도록 제안하십시오.
rem each robocopy statement and then underneath have the error check.
if %ERRORLEVEL% GEQ 8 goto failed
rem end of batch file
GOTO success
:failed
rem do not pause as it will pause msbuild.
exit 1
:success
exit 0
파일이 복사되지 않으면 혼란이 설정됩니다 = VS에 오류가 없습니다. 그런 다음 변경 사항이 있으면 파일이 복사되고 VS 오류가 발생하지만 개발자가 원하는 모든 작업이 수행되었습니다.
추가 팁 : 스크립트에서 일시 중지는 VS 빌드에서 무기한 일시 중지가 될 수 있으므로 사용하지 마십시오. 스크립트를 개발하는 동안 timeout 10
. 매달린 빌드가 아니라 이것을 알아 차리고 주석 처리 할 것입니다.
답변
코드 1의 이유는 대상 폴더가 읽기 전용 이었기 때문입니다. 이것이 누군가를 돕기를 바랍니다! 한 디렉토리에서 다른 디렉토리로 복사하는 포스트 빌드 이벤트가 있었고 대상은 읽기 전용이었습니다. 그래서 방금 디렉토리와 모든 하위 디렉토리에서 읽기 전용 속성을 선택 취소했습니다! 안전한 디렉토리인지 확인하십시오!
답변
가져 오기 시스 인 터널로부터 프로세스 모니터를
연산 결과 봐 (경로 필드에)에 Lunaverse.DbVerse에 대한보고를 설정합니다. 거기에서 무엇이 잘못되었는지 분명해야합니다.
답변
OS로 보호 된 “.. \ Common7 \ IDE \ PrivateAssemblies”가 작동하도록 빌드 후 복사본을 가져 오려면 VS를 관리자로 실행해야했습니다.
답변
‘사용하는 사람들의 경우, 사본 에’명령을 빌드 이벤트 ( 사전 빌드 이벤트 명령 줄 또는 / 및 빌드 후 이벤트 명령 줄 에서) 프로젝트 -> 속성 : 당신은 ‘ 복사 ‘명령 매개 변수는 여기에 같이 나타납니다 copy "source of files" "destination for files"
. 따옴표를 사용하는 것을 잊지 마십시오 (주소 문자열의 공백 문제를 방지하기 위해).