SimpleIsBest.NET

유경상의 닷넷 블로그

Visual Studio 2005 - 나만의 템플릿 만들기

by 블로그쥔장 | 작성일자: 2006-01-09 오후 10:33:00
이 글은 오래된 전에 작성된 글입니다. 따라서 최신 버전의 기술에 알맞지 않거나 오류를 유발할 수 있습니다. 저자는 이 글에 대한 질문을 받지 않을 것입니다. 하지만 이 글이 리뉴얼 되면 이 글에 대한 질문을 하거나 토론을 할 수도 있습니다.
Visual Studio 2005는 이전 버전에 비해 개발 생산성 향상을 향상 시켜주는 많은 기능이 포함되어 있습니다. 여러 기능 중 가장 마음에 드는 것 중 하나로 사용자 정의 프로젝트 템플릿 만들기가 매우 쉬워 졌다는 것입니다. 이번 포스트에서는 Visual Studio 2005의 템플릿 작성 방법에 대해 몇 자 끄적여 볼까 합니다.

Custom Templates in Visual Studio 2005

프로젝트를 수행하거나 예제코드를 비주얼 스튜디오(Visual Studio)로 작성할 때 항상 프로젝트를 만들곤 한다. 필자는 간단한 예제 코드는 텍스트 에디터와 커맨드 라인을 사용하지만 웹 어플리케이션이나 COM+ 관련 DLL 및 EXE를 작성할 때는 죽으나 사나 비주얼 스튜디오의 능력을 빌리곤 한다. 그런데 매번 프로젝트를 만들 때마다 지겹도록 반복하는 작업이 있다. AssemblyInfo.cs 파일의 내용을 수정하고, 각 .cs 파일의 맨 위에 소스 코드 주석을 다는 등등의 일반적인 작업 뿐만 아니라, COM+ DLL 프로젝트라면 System.EnterpriseServices를 매번 참조해야 하는 등등의 작업이다. 이러한 작업은 반복적일 뿐만 아니라 매우 지겨운 작업임에 분명하다.

이러한 반복적이고 지루한 작업을 없애는 방법은 이런 작업들이 이미 적용된 프로젝트 템플릿이 있으면 될 것이다. 이미 비주얼 스튜디오 내에는 다양(?)한 프로젝트 템플릿이 존재하지만 대부분 매우 일반적인 템플릿들만이 제공되고 있어서 나만의 템플릿, 혹은 프로젝트 팀에서 사용할 공통 프로젝트 템플릿은 아님에 분명하다.

User Project Templates in Visual Studio 2005

비주얼 스튜디오 2005 이전 버전에서 커스텀 템플릿을 만드는 것이 가능했다. 하지만 이놈의 것이 MSDN 등에 거의 문서화 되어 있지 않기 때문에 작성이 쉽지 않았다. 비주얼 스튜디오 2005에서는 존재하는 프로젝트를 템플릿으로 작성해주는 "Export Template" 마법사를 제공한다. 이 마법사는 현재 열려있는 프로젝트 중 하나를 템플릿 형태로 저장해 준다.


화면1. Export Template Wizard

커스텀 템플릿을 작성하는 방법은 매우 쉽다. 비주얼 스튜디오에서 작성하고자 하는 프로젝트 템플릿을 생성한다. 이 프로젝트에 템플릿에서 가져야 하는 프로젝트 속성, 참조 등을 설정하고 소스 코드 역시 템플릿에서 설정하고자 하는 형태로 바꾼다. 예를 들자면, 소스 코맨트나 템플릿에서 필요로 하는 클래스를 추가하고 기본 특성(attribute), 메쏘드 등을 추가 한다. 필수는 아니지만 컴파일이 되는가 확인하는 것도 좋다. 그리고 나서 파일 메뉴의 "Export Template" 메뉴를 선택한다. 그러면 화면1과 같은 마법사가 나타날 것이며 생성된 프로젝트를 템플릿으로 만들어 준다. 구체적인 예제와 단계별 작업 요령은 다음 글들을 참조하기 바란다. (같은 내용을 반복해 글을 쓰자니 귀차니즘이... -_-;)

MSDN Magazine의 글이 가장 상세하게 템플릿을 설명하고 있으므로 이 문서를 집중적으로 읽어 보면 될 것이다. 마지막 문서는 비록 DirectX 프로젝트의 템플릿을 만드는 예제이지만 한글 문서라는 장점이 있다(필자는 이 글을 읽어 보진 않았다).

Using Template

템플릿은 SI 프로젝트를 수행하는데 매우 유용하게 사용할 수 있다. 간단한 웹 어플리케이션 프로젝트라면 하나의 웹 프로젝트를 여러 개발 팀원이 VSS 를 통해 공유하겠지만, 여러 COM+ DLL을 작성해야 하는 프로젝트이거나 커다란 규모의 웹 어플리케이션이라면 한두 개의 비주얼 스튜디오 프로젝트로는 어림도 없게 된다. 이런 경우 개발자들은 수시(?)로 프로젝트를 생성해야 하는데, 매번 프로젝트 표준(반드시 참조해야 할 어셈블리, 커맨트 규칙 등)에 맞추어 프로젝트를 생성하자면 매우 귀찮을 뿐더러, 초보 개발자들에게는 커다란 짐이 될 수도 있다. 이럴 때 개발 팀에서 사용하는 표준 프로젝트 템플릿이 있다면, 반복적인 작업을 줄여 줄 수 있을 뿐만 아니라 새로이 팀에 참가한 개발자나 초보 개발자들이 시작점을 잡기 용이해 질 것은 분명하다.

프로젝트 템플릿 뿐만 아니라 아이템 템플릿은 더욱 유용한 경우가 많다. 어플리케이션을 작성하다 보면, 동일한 유형의 화면들을 많이 작성하기 마련이다. 이 때 하나의 유형에 대해 기본 적인 코드를 작성해 놓고, 이 소스 파일을 템플릿으로 작성해 놓으면 매우 편리하다. 동일한 유형을 또 다시 작업할 때는 반복해야 할 코드는 확연히 줄어 들 것이다.

템플릿에서 주의해야 할 사항은, 템플릿이 기본으로 제공하는 코드에 버그가 존재한다면 치명적일 수 있다. 개발팀 내의 모든 개발자들이 템플릿에서 제공하는 코드를 기본으로 프로그램을 작성하기 때문에 템플릿 코드에 문제가 있다면 이 템플릿을 사용하는 모든 코드가 문제를 안고 시작하는 셈이 되기 때문이다. 필자도 1998년에 참여했던 프로젝트에서 비슷한 문제를 겪었었다. 그 때는 수천 개의 화면을 7-8개의 화면 유형으로 나누고 각 화면 유형에 대한 예제 코드 템플릿을 제공했었다. 40여명의 개발자들 이들 화면 유형 코드를 Copy & Paste 방식으로 자신의 코드에 가져다 썼었다. 이렇게 개발이 한창 진행 중이다가, 템플릿으로 제공된 예제 코드에 버그가 발견되었다. 덕택에 40여명의 개발자들은 자신이 몇달 동안 작성한 수 십개의 화면에 대해 하루 온종일 코드를 수정해야 했으며, 이런 사건은 프로젝트 개발 기간 내에 3-4 번 반복되곤 하였다. 템플릿으로 제공되는 코드에 버그가 존재하지 않는가 항상 주의해야 할 것이며, 템플릿 자체에 너무 많은 코드를 넣으려고 하는 것 역시 좋지 않다. 대신 클래스 라이브러리와 클래스 상속을 이용한다면, 코드를 복사하여 사용하는(템플릿 역시 코드 복사와 동등한 코드 재사용 법이다) 것 보다 좀 더 유연하게 버그에 대처할 수 있을 것이다.

Conclusion

비주얼 스튜디오 2005에서는 사용자 정의 템플릿을 손쉽게 작성할 수 있도록 Export Template 마법사를 제공하며, 이를 통해 팀 단위 개발에서 사용 가능한 프로젝트 템플릿과 아이템 템플릿을 작성할 수 있다. 비주얼 스튜디오 2003까지 제공되던 엔터프라이즈 템플릿이 사라진 이유도 2005 버전에서 손쉽게 사용자 정의 템플릿을 작성할 수 있기 때문이다. 개인이 사용할 템플릿이라면 그 정도가 덜하겠지만, 개발 팀 내에서 여러 개발자가 사용할 템플릿이라면 템플릿이 제공하는 코드에 버그가 없도록 세심한 주의를 필요로 하며, 템플릿에 다량의 코드를 넣는 것 보다는 베이스 클래스를 DLL 형태로 제공하는 것이 더 유연한 코드 재사용 모델임을 숙지할 필요가 있겠다.