내 클라이언트 솔루션의 일부 프로젝트에는 빌드 후 이벤트 ( xcopy특정 폴더에 대한 빌드 출력)가 있습니다. 이것은 로컬에서 빌드 할 때 잘 작동합니다. 그러나 인 TeamCity에, 나는 가끔 얻을
xcopy […] 코드 2로 종료되었습니다.
regular을 사용하면 copy코드 1로 종료됩니다. 복사되는 특정 파일이 동일하지 않더라도 파일 잠금과 관련이 있으므로 공유 대상 디렉토리에서 잠글 수 있습니다. 내가 사용하는 /y파일을 덮어 쓰기에없는 프롬프트.
TeamCity에서는 실패하지만 로컬에서는 실패하는 이유는 무엇입니까?
답변
/Yxcopy와 함께 스위치 를 제공하더라도 xcopy가 복사하는 것이 파일인지 디렉토리인지 알지 못하면 오류가 계속 발생합니다. 이 오류는 “exited with code 2″로 나타납니다. 명령 프롬프트에서 동일한 xcopy를 실행하면 xcopy가 파일 또는 디렉터리의 응답을 요청하는 것을 볼 수 있습니다.
자동화 된 빌드로이 문제를 해결하려면 파이프를 사용하여 미리 정의 된 응답으로 에코 할 수 있습니다.
복사하는 것이 파일이라고 말하려면 echo in F:
echo F|xcopy /y ...
복사하는 것이 디렉토리라고 말하려면 echo in D:
echo D|xcopy /y ...
때때로 위의 문제는 xcopy 대신 복사 명령을 사용하여 해결할 수 있습니다.
copy /y ...
그러나 최종 파일 대상으로 이어지는 존재하지 않는 디렉토리가있는 경우 “exited with code 1″이 발생합니다.
기억하십시오 : /C스위치와 xcopy를주의해서 사용하십시오 .
답변
내 경로 끝에 \를 추가하여 오류 코드 2를 수정했습니다.이 코드가 없으면 xcopy는 폴더가 아닌 파일이라고 생각합니다.
답변
빌드 후 이벤트에서 xcopy를 사용하는 경우 / C 외에 / Y 스위치를 사용합니다.
/C Continues copying even if errors occur.
/Y Suppresses prompting to confirm you want to overwrite an existing file.
답변
이 문제에 대한 수정 사항은 대상 bin 폴더로 이동하여 적절한 하위 폴더가 있는지 확인하는 것이 었습니다. 해당 하위 폴더가 수동으로 생성되면 빌드 프로세스가 성공적으로 완료되었습니다.
답변
copy나를 위해 고쳤습니다. xcopy with /c /y작동하지 않았다. 나는 출구 4를 얻고 있었기 때문에 함께 xcopy갔지만 주위에 따옴표가 필요하다는 것이 밝혀졌습니다 ($TargetPath).
내 스크립트 :
if $(ConfigurationName) == Debug copy "$(TargetPath)" "$(SolutionDir)\Folder\bin\Debug\$(TargetFileName)"
답변
아마도 git과 함께 TeamCity를 사용하고있을 것입니다. 그렇다면 복사하려는 폴더 가 git 저장소에 있는지 확인하십시오 . 일반적으로 git aviod는 빈 프로젝트 폴더를 저장소에 추가하므로 xcopy찾지 못하고 오류가 발생합니다.
빈 폴더에 빈 텍스트 파일을 추가하고 커밋하고 저장소에 폴더가 나타나는 것을 볼 수 있습니다.
답변
