7. Tips/Visual Studio

VBScript Projects in Visual Studio

SSKK 2009. 10. 20. 05:43
이 글은 아래 원문을 번역한 것이다.

http://krestenm.blogspot.com/2007/12/vbscript-projects-in-visual-studio2.html

비쥬얼 스튜디오의 디버거는 VBScript 를 디버깅하는데 있어 매우 유용한 툴이다. 비쥬얼 스튜디오는 스크립트를 조직하고 CVS, Subversion, 또는 Source Safe 와 같은 버전 제어 시스템을 가지고 있다면 스크립트의 변경을 추적하도록 할 수 있다. 비쥬얼 스튜디오는 또한 COM 개체와 기본적인 VBScript 함수에 대한 인텔리센스를 제공한다.

하지만 VBScript 프로젝트를 생성하기 위한 비쥬얼 스튜디오 프로젝트 템플릿을 찾을 수 없었다. 몇몇 사람들은 커스텀 빌드 액션을 설정하라고 추천하지만, 지금까지 검색해본 결과 아무도 시도하지 았았다. 그리하여 내가 알아낸 것을 공유하기 위해 이 블로그에 작성하였다.

VBScript 프로젝트를 위한 템플릿이 없기때문에, 비쥬얼 스튜디오에서 제공하는 가장 기본적인 템플릿을 찾기로 하였다. 그게 바로 Makefile 프로젝트이다. 이제 메뉴에서 New Project 를 선택하고 아래 그림처럼 프로젝트를 생성하라.


마법사가 뜨고 프로젝트에 대해 세부적인 설정을 할 수 있다. 하지만 그러한 설정이 필요없기 때문에 그냥 Finish 를 클릭하자.


템플릿은 전형적인 C++ 프로젝트를 위한 3개의 폴더와 readme.txt 파일을 생성하였다. 모두 필요 없기때문에 당장 제거하자.


이제 프로젝트에 새로운 VBScript 파일을 추가하자.


이제 프로젝트에서 오른쪽 마우스를 클릭하고 Properties 를 선택하라. General Page 를 선택하고 "Configuration Type" 을 "Makefile" 에서 "Utility"로 변경하라.


다음은 "Debugging" 페이지를 선택하고 "Command" 필드를 "cscript.exe" 로 설정하고 "Command Arguments" 필드를 "//X MyScript.vbs" 로 설정한다. 이것은 "CScript.exe //X MyScript.vbs" 명령어를 실행할 것이고 이것은 디버그-모드에서 스크립트를 실행할 것이다.


이제 아래 그림과 같은 코드를 추가하자. CTRL+Space 를 누르면 인텔리센스가 제공된다는 것을 기억하라.


이제 프로젝트를 실행하기 위해 "디버깅 없이 시작하기"인 Ctrl+F5 를 눌러라. 디버거 없이 시작되는 이유는 비쥬얼 스튜디오는 cscript.exe 프로세스에 디버거를 부착하려고 시도할 것이기 때문이다, 하지만 우리가 디버깅하려고 하는 것은 스크립트이다.

파라미터를 //X 로 설정했기 때문에, 스크립팅 엔진은 "Script Breakpoint" 예외를 던질 것이다, 그러면 비쥬얼 스튜디오는 Just-In-Time 디버거가 그 예외를 잡아서 그것에 대해 아래 그럼처럼 어떻게 할 지를 묻는다. 현재 비쥬얼 스튜디오 인스턴스를 선택하고 "Yes" 를 눌러라.


이제 비쥬얼 스튜디오는 스크립트에 부착할 것이고 예전에 하던데로 그것을 디버그할 수 있다. 아래 그림에서 중단점이 히트된 곳을 볼 수 있다. 또한 변수 "I" 에 대한 값도 볼 수 있다.


이것은 비쥬얼 스튜디오에서 VBScript 프로젝트를 만드는 나의 첫번째 shot 이다. 이렇게 한 후에는, 당신은 다른 setup 을 실험할 수 있다. 곧 발견하게 되겠지만 아마 당신은 솔루션 내에 좀더 많은 스크립트를 가지고 싶어 할 것이다. 이것은 스크립트를 전환할 때마다 프로젝트의 설정을 반드시 변경해야 한다. 나는 실행할 스크립트를 명시한 많은 설정(디버그와 릴리즈와 같은)을 가지거나 각 스크립트를 위한 커스텀 빌드 액션을 설정하는 것을 제안한다. 커스텀 빌드 액션을 가지는 것은 당신 편집하고 있는 액티브 파일을 컴파일 하는 CTRL+F7 을 누르는 것을 필요로 한다. "Start Without Debugger" 를 선택하면, 모든 파일을 위한 빌드 액션이 활성화 될 것이고, 각 스크립트를 위한 디버거를 선택하라는 요청을 받게 될 것이다.