Visual Studio 2008을 사용하면 명령을 선언하고 프로젝트의 빌드 후 이벤트에 연결할 수 있습니다. 많은 개발자와 마찬가지로 정기적으로 파일을 응용 프로그램 출력 디렉토리에 xcopy하는 데 사용합니다.
단일 프로젝트 내에서 두 개의 다른 위치에서 두 개의 다른 대상으로 파일을 xcopy해야하는 프로젝트를 진행하고 있습니다. 즉, 동일한 빌드 후 이벤트에서 두 개의 다른 xcopy 명령을 호출해야합니다. 빌드 후 이벤트는 단일 명령 만 사용하며 여러 명령을 호출해야하는 경우 명령을 * .bat 파일에 넣고 빌드 후 이벤트에서 호출해야합니다.
이것이 맞습니까, 아니면 빌드 후 이벤트에서 두 개의 명령을 호출하는 더 간단한 방법이 있습니까? 도움을 주셔서 미리 감사드립니다.
답변
빌드 후 명령을 원하는만큼 입력 할 수 있습니다. 줄 바꿈으로 구분하십시오.
다음은 내 프로젝트 중 하나의 예입니다.
답변
중요 : 배치 파일을 실행할 때 다음 행을 실행하려면 “call”문을 사용해야합니다. “call”을 사용하지 않으면 실행이 .bat로 이동하고 다음 행으로 돌아 가지 않습니다. DOS 프롬프트와 동일합니다.
예 :
call MyBatch1.bat
call MyBatch2.bat
답변
또 다른 옵션이 있습니다 &&
. 명령을 . 예
copy $(TargetPath) d:\folder1 && copy $(TargetPath) d:\folder2
이것은 줄 바꿈으로 분리하는 것과 정확히 동일하지 않습니다 &&
. 이전 명령이 실패하면 다음 명령이 실행되지 않습니다.
줄 바꿈으로 구분하는 것이 읽기 쉽기 때문에 선호해야합니다. 그러나 &&
유용 할 때 적어도 한 가지 경우를 알고 있습니다. 속성 시트를 사용하여 서로 다른 시스템에서 서로 다른 빌드 후 단계를 갖는 시나리오입니다. VS 2008에서는 속성 시트에서 PostBuildStep을 직접 설정할 수 없지만 명령으로 사용자 매크로를 추가하고 기본 프로젝트 설정에서 호출 할 수 있습니다. 매크로는 한 줄이므로 &&
여러 명령을 사용할 수 있습니다 .
답변
각 명령은 별도의 줄에 있어야합니다. 그러나 내가 찾은 것은 이러한 명령 중 하나를 실행하는 동안 오류가 발생하면 전체 빌드 후 전체가 실패하므로 디버깅을 위해 한 번에 하나씩 각 빌드 후 명령을 시도해야한다는 것입니다.
답변
& 또는 && 또는;로 명령 분리 VS2017에서는 작동하지 않습니다. 그런 간단한 기능은 VS2017에서 사용할 수 없다는 것을 믿을 수 없습니다. Visual Studio는 빌드 후 이벤트 창의 전체 텍스트를 하나의 문자열로 실행하려고합니다. 나에게 유일한 옵션은 내가 특별히 좋아하지 않는 배치 스크립트를 만드는 것입니다.
답변
동일한 빌드 이벤트에서 수행 할 작업이있는 여러 속성 시트가있는 경우 다음을 수행하여 명령을 연결할 수 있습니다.
%(Command)
echo foo
여기서는 %(Command)
명령의 이전 값으로 확장됩니다.
개인적으로 현재 상속 된 명령이없는 경우에도 모든 빌드 이벤트에 대해이 작업을 수행합니다. 이렇게하면 나중에 속성 시트를 추가해도 문제가 발생하지 않기 때문입니다.
답변
Visual Studio 2017에서 다음을 수행 할 수 있습니다.
<PostBuildEvent>
<Command>
copy $(TargetPath) $(SolutionDIr)\bin1
copy $(TargetPath) $(SolutionDIr)\bin2
</Command>
</PostBuildEvent>