2020. 3. 3. 13:54ㆍOthers
VisualStudio의 프로젝트 속성에는 Build Events라는 탭을 제공하고 있으며, 여기에서 빌드 전후로 실행될 Shell 명령을 작성할 수 있습니다. 여기서 Shell 명령이란 Windows의 명령 프롬프트와 .bat 파일에서 실행될 수 있는 모든 명령어를 말합니다. 이를 통해 빌드 전후로 매번 직접 해야했던 파일이동, 배포 등의 작업을 자동화 할 수 있습니다.
여기에서는 VisualStudio 2019 Community 버전을 기준으로 Build event를 작성하는 방법에 대해 간단히 정리하고자 합니다.
간단한 매크로 작성하기
Pre-build event command line에는 빌드 이전에 실행될 명령을 작성합니다. 반대로 Post-build event command line에는 빌드 후에 실행될 명령을 작성할 수 있습니다. 예를 들어 빌드된 파일들을 프로젝트의 Library 폴더로 복사해야 한다면 아래와 같은 Shell 명령을 Post-build event에 입력해 봅시다.
copy "$(TargetDir)*$(TargetExt)" "$(ProjectDir)..\Library\"
위 명령이 무엇인지 하나하나 분석해 보도록 합시다.
-
copy
는 Shell 명령으로서 파일을 복사하는 명령입니다. 명령 프롬프트와 .bat 파일에서 사용할 수 있는 명령어들을 사용할 수 있습니다. 만약 파일을 실행해야 한다면C:\Macros\buildevent.exe
형태로 파일 명을 기재해주시면 됩니다.
명령 프롬프트에서 사용할 수 있는 명령어는help
명령어로 간단히 확인할 수 있습니다.
여기서는 자주 사용되는 몇가지를 소개합니다mkdir
: 폴더를 생성합니다.copy
: 하나 이상의 파일을 복사합니다.xcopy
: 파일과 폴더 트리 전체를 복사합니다.move
: 파일을 이동시킵니다.del
: 파일을 삭제합니다.rmdir
: 폴더를 삭제합니다.ren
: 파일명을 변경합니다.
-
$(TargetDir)
은 빌드 결과 파일들이 생성되는 폴더 경로를 반환하는 매크로입니다. 사용가능한 매크로에 대한 내용은 MSDN의 Macros에서 확인하실 수 있습니다. *$(TargetExt)
는 빌드 후 생성되는 파일들의 확장자를 반환하는 매크로입니다.$(TargetExt)
대신에 .dll 등 원하는 파일 확장자를 지정해도 됩니다. 앞에 *은 와일드카드 문자로서 이를 통해 모든 파일을 선택할 수 있습니다. 파일명을 명확하게 알고 있다면 와일드카드 문자 대신에 해당 파일명을 기술해도 됩니다.-
$(ProjectDir)
은 프로젝트의 루트폴더 경로를 반환하는 매크로입니다.$(ProjectDir)
대신에 C:\Lib\ 등의 원하는 다른 경로를 지정할 수 있습니다. - 위 명령에서
"$(TargetDir)*$(TargetExt)"
는 복사될 원본파일 경로를 의미하며,"$(ProjectDir)..\Library\"
는 파일이 복사될 경로를 의미합니다. - 위 매크로를 Post-build event에 입력한 후 빌드를 진행하면, 매크로가 실행되며 VisualStudio의 Output Window에 실행결과가 출력됩니다.
위에서는 하나의 매크로 명령를 실행했지만 한번에 여러 매크로를 실행할 수 있습니다. 실행될 매크로들을 여러줄에 작성하면 순차적으로 매크로들이 실행됩니다.
조건절 작성하기
특정 상황을 충족했을 때만 매크로가 실행되도록 할 수 있습니다. 이를 위해 if
명령어를 사용할 수 있습니다.
move "$(ProjectDir)..\Library\*$(TargetExt)" "$(ProjectDir)..\Test\" if $(ConfigurationName) == Release copy "$(TargetDir)*$(TargetExt)" "$(ProjectDir)..\Library\"
위 매크로는 2줄로 구성되어 있습니다. 첫번째 줄은 Library 폴더에 복사된 파일을 Test 폴더로 이동시킵니다. 두번째 줄의 매크로는 조건절이 포함되어 있으며 $(ConfigurationName)
값이 Release 일 때만 복사를 진행하게 됩니다.
주의사항
- 이미 빌드가 진행한 후에 다시 빌드를 진행 할 때는, 빌드가 생략되므로 매크로의 실행도 생략될 수 있습니다. 따라서 빌드와 매크로가 제대로 진행되었는지 VisualStudio의 Output Window를 확인해주세요.
- 매크로 실행 중에 오류가 발생하거나, 잘못된 매크로를 작성했을 때 오류를 확실하게 알 수 없는 경우도 있습니다. 따라서 복잡한 매크로는 배치파일(.bat)로 작성하거나 실행파일(.exe)로 작성하는 것이 도움이 될 수 있습니다.
References
'Others' 카테고리의 다른 글
VS2017, WebSite Project Online 상태로 변경 (0) | 2017.12.29 |
---|---|
[Safari] Silverlight Out of Browser 설치하기 (0) | 2017.11.09 |
[Selenium] VisualStudio에서 Selenium 실행하기 (0) | 2017.08.31 |
[Selenium] GeckoDriver로 Firefox 실행하기 (0) | 2017.08.31 |
VS2015, WebSite Project Online 상태로 변경 (0) | 2017.03.18 |