내 클라이언트 솔루션의 일부 프로젝트에는 빌드 후 이벤트 ( xcopy
특정 폴더에 대한 빌드 출력)가 있습니다. 이것은 로컬에서 빌드 할 때 잘 작동합니다. 그러나 인 TeamCity에, 나는 가끔 얻을
xcopy […] 코드 2로 종료되었습니다.
regular을 사용하면 copy
코드 1로 종료됩니다. 복사되는 특정 파일이 동일하지 않더라도 파일 잠금과 관련이 있으므로 공유 대상 디렉토리에서 잠글 수 있습니다. 내가 사용하는 /y
파일을 덮어 쓰기에없는 프롬프트.
TeamCity에서는 실패하지만 로컬에서는 실패하는 이유는 무엇입니까?
답변
/Y
xcopy와 함께 스위치 를 제공하더라도 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
찾지 못하고 오류가 발생합니다.
빈 폴더에 빈 텍스트 파일을 추가하고 커밋하고 저장소에 폴더가 나타나는 것을 볼 수 있습니다.