Visual Studio SDK 기본 사항

이 섹션에서는 Visual Studio 아키텍처, 구성 요소, 서비스, 스키마, 유틸리티 등을 포함하여 Visual Studio 확장에 대한 자세한 정보를 제공합니다.

확장성 아키텍처

다음 그림은 Visual Studio 확장성 아키텍처를 보여 줍니다. VSPackage는 IDE에서 서비스로 공유되는 애플리케이션 기능을 제공합니다. 표준 IDE는 IDE 창 기능에 대한 액세스를 제공하는 SVsUIShell과 같은 광범위한 서비스도 제공합니다.

Environment Architecture graphic Visual Studio 아키텍처의 일반화된 보기

VSPackages

VSPackage는 UI 요소, 서비스, 프로젝트, 편집기 및 디자이너를 사용하여 Visual Studio를 구성 및 확장하는 소프트웨어 모듈입니다. VSPackage는 Visual Studio의 중앙 아키텍처 단위입니다. 자세한 내용은 VSPackages을 참조하세요.

Visual Studio Shell

Visual Studio 셸은 기본 기능을 제공하고 해당 구성 요소 VSPackage 및 MEF 확장 간의 교차 통신을 지원합니다. 자세한 내용은 Visual Studio 셸을 참조하세요.

사용자 환경 지침

Visual Studio에 대한 새로운 기능을 디자인하려는 경우 디자인 및 유용성 팁에 대한 Visual Studio 사용자 환경 지침을 확인해야 합니다.

명령

명령은 문서 인쇄, 보기 새로 고침 또는 새 파일 만들기 등의 작업을 수행하는 함수입니다.

Visual Studio를 확장할 때 명령을 만들고 Visual Studio 셸에 등록할 수 있습니다. 메뉴 또는 도구 모음과 같이 이러한 명령이 IDE에 표시되는 방법을 지정할 수 있습니다. 일반적으로 도구 메뉴에 사용자 지정 명령이 나타나고 도구 창을 표시하는 명령이 보기 메뉴의 다른 Windows 하위 메뉴에 표시됩니다.

명령을 만드는 경우 해당 이벤트 처리기도 만들어야 합니다. 이벤트 처리기는 명령이 표시되거나 사용하도록 설정되는 경우를 결정하며, 해당 텍스트를 수정할 수 있게 하고, 활성화된 경우 명령이 적절히 응답하도록 합니다. 대부분의 경우 IDE는 IOleCommandTarget 인터페이스를 사용하여 명령을 처리합니다. Visual Studio의 명령은 로컬 선택 기반의 가장 안쪽의 명령 컨텍스트부터 전역 선택 기반의 가장 바깥쪽 컨텍스트까지 처리됩니다. 주 메뉴에 추가된 명령은 즉시 스크립팅에 사용할 수 있습니다.

자세한 내용은 명령, 메뉴 및 도구 모음을 참조하세요.

메뉴 및 도구 모음은 사용자가 명령을 호출하는 방법을 제공합니다. 메뉴는 일반적으로 도구 창 위에 개별 텍스트 항목을 표시되는 명령의 행 또는 열입니다. 하위 메뉴는 사용자가 작은 화살표가 포함된 명령을 클릭할 때 표시되는 보조 메뉴입니다. 바로 가기 메뉴는 사용자가 특정 UI 요소를 마우스 오른쪽 단추로 클릭할 때 표시됩니다. 몇 가지 일반적인 메뉴 이름은 파일, 편집, 보기입니다. 자세한 내용은 메뉴 및 명령 확장을 참조하세요.

도구 모음은 콤보 상자, 목록 상자 및 텍스트 상자와 같은 단추 및 기타 컨트롤의 행 또는 열입니다. 도구 모음 단추에는 일반적으로 파일 열기 명령의 폴더 아이콘 또는 인쇄 명령의 프린터와 같은 아이콘 이미지가 포함되어 있습니다. 모든 도구 모음 요소는 명령과 연결됩니다. 도구 모음 단추를 클릭하면 연결된 명령이 실행됩니다. 드롭다운 컨트롤의 경우 드롭다운 목록의 각 항목은 다른 명령과 연결됩니다. 분할기 컨트롤과 같은 일부 도구 모음 컨트롤은 하이브리드입니다. 컨트롤의 한 쪽은 도구 모음 단추이고 다른 한 쪽은 클릭할 경우 일부 명령을 표시하는 아래쪽 화살표입니다.

도구 창

도구 창은 IDE에서 정보를 표시하는 데 사용됩니다. 도구 상자, 솔루션 탐색기, 속성 창 및 웹 브라우저는 도구 창의 예입니다.

도구 창은 일반적으로 사용자가 상호 작용할 수 있는 다양한 컨트롤을 제공합니다. 예를 들어 속성 창을 사용하면 사용자가 특정 용도를 지원하는 개체의 속성을 설정할 수 있습니다. 속성 창은 이러한 의미에서 특수하지만 다양한 상황에서 사용할 수 있기 때문에 일반적입니다. 마찬가지로 출력 창은 텍스트 기반 출력을 제공하기 때문에 특수하지만 Visual Studio의 많은 하위 시스템이 Visual Studio 사용자에게 출력을 제공하는 데 사용할 수 있기 때문에 일반적입니다.

여러 도구 창이 포함된 Visual Studio의 다음 그림을 고려해 보세요.

Screen shot

일부 도구 창은 솔루션 탐색기 도구 창을 표시하고 다른 도구 창을 숨기지만 탭을 클릭하여 사용할 수 있게 해주는 단일 창에 함께 도킹됩니다. 그림은 다른 2개의 도구 창인 오류 목록출력 창이 하나의 창에 함께 도킹된 것을 보여줍니다.

또한 표시된 기본 문서 창은 여러 편집기 창을 보여 줍니다. 도구 창은 일반적으로 인스턴스가 하나만 있지만(예: 솔루션 탐색기를 하나만 열 수 있음), 편집기 창은 여러 인스턴스를 가질 수 있습니다. 각 창을 사용해서 모두 동일한 창에 도킹되는 개별 문서를 편집할 수 있습니다. 그림은 2개의 편집기 창과 하나의 양식 디자이너 창이 있는 문서 창을 보여줍니다. 문서 창의 모든 창은 탭을 클릭하여 사용할 수 있지만 EditorPane.cs 파일이 포함된 편집기 창이 표시되고 활성 상태입니다.

Visual Studio를 확장할 때는 Visual Studio 사용자가 확장과 상호 작용할 수 있게 해주는 도구 창을 만들 수 있습니다. 또한 Visual Studio 사용자가 문서를 편집할 수 있게 해주는 자체 편집기를 만들 수 있습니다. 도구 창 및 편집기가 Visual Studio에 통합되기 때문에 도킹 또는 탭에 올바르게 표시되도록 프로그래밍할 필요가 없습니다. Visual Studio에 올바르게 등록되었으면 Visual Studio에서 도구 창 및 문서 창의 일반 기능이 자동으로 포함됩니다. 자세한 내용은 도구 창 확장 및 사용자 지정을 참조하세요.

문서 창

문서 창은 MDI(다중 문서 인터페이스) 창의 프레임 자식 창입니다. 문서 창은 일반적으로 텍스트 편집기, 양식 편집기(디자이너라고도 함) 또는 편집 컨트롤을 호스트하는 데 사용되지만 다른 기능 유형을 호스트할 수도 있습니다. 새 파일 대화 상자에는 Visual Studio가 제공하는 문서 창 예가 포함되어 있습니다.

대부분의 편집기는 HTML 페이지, 프레임 세트, C++ 파일 또는 헤더 파일과 같은 프로그래밍 언어 또는 파일 형식에 특화되어 있습니다. 사용자는 새 파일 대화 상자에서 템플릿을 선택하여 템플릿과 연관된 파일 형식에 대해 편집기에 대한 문서 창을 동적으로 만듭니다. 사용자가 기존 파일을 열 때도 문서 창이 생성됩니다.

문서 창은 MDI 클라이언트 영역으로 제한됩니다. 각 문서 창에는 위에 탭이 있고 탭 순서는 MDI 영역에서 열 수 있는 다른 창에 연결됩니다. 문서 창의 탭을 마우스 오른쪽 단추로 클릭하면 MDI 영역을 다중 가로 또는 세로 탭 그룹으로 분할하는 옵션이 포함된 바로 가기 메뉴가 표시됩니다. MDI 영역을 분할하면 여러 파일을 동시에 볼 수 있습니다. 자세한 내용은 문서 창을 참조하세요.

편집기

Visual Studio 편집기를 사용하면 편집기를 사용자 정의하고 MEF(Managed Extensibility Framework)를 사용하여 자체 콘텐츠 유형에 맞게 사용할 수 있습니다. 많은 경우에 편집기 확장을 위해 VSPackage를 만들 필요가 없지만 셸(예: 메뉴 명령 또는 바로 가기 키)에서 기능을 포함하려면 MEF 확장을 VSPackage와 결합할 수 있습니다.

또한 사용자 지정 편집기를 만들 수 있습니다. 예를 들어 데이터베이스에 읽기 및 쓰기를 수행하거나 디자이너를 사용해야 할 수 있습니다. 메모장 또는 Microsoft WordPad와 같은 외부 편집기를 사용할 수도 있습니다. 자세한 내용은 편집기 및 언어 서비스 확장을 참조하세요.

언어 서비스

Visual Studio 편집기로 새 프로그래밍 키워드를 지원하거나 새 프로그래밍 언어를 지원하려면 언어 서비스를 만듭니다. 각 언어 서비스는 특정 편집기 기능을 완전히 또는 부분적으로 구현하거나 전혀 구현하지 않을 수도 있습니다. 구성 방법에 따라 언어 서비스가 구문 강조 표시, 중괄호 일치, IntelliSense 지원 및 기타 편집기 기능을 제공할 수 있습니다.

언어 서비스의 핵심에는 파서와 스캐너가 있습니다. 스캐너(또는 렉서)는 원본 파일을 토큰이라고 부르는 요소들로 나누고 파서는 이러한 토큰 사이의 관계를 설정합니다. 언어 서비스를 만들 때는 Visual Studio가 토큰과 해당 언어의 문법을 이해할 수 있도록 사용자가 파서 및 스캐너를 구현해야 합니다. 관리되는 또는 관리되지 않는 언어 서비스를 만들 수 있습니다. 자세한 내용은 레거시 언어 서비스 확장성을 참조하세요.

프로젝트

Visual Studio에서 프로젝트는 개발자가 원본 코드 및 기타 리소스를 구성하고 빌드하기 위해 사용하는 컨테이너입니다. 프로젝트를 사용하면 원본 코드, 웹 서비스 및 데이터베이스에 대한 참조 및 기타 리소스를 구성, 빌드, 디버그 및 배포할 수 있습니다. VSPackages는 프로젝트 유형, 프로젝트 하위 유형 및 사용자 지정 도구를 제공하여 Visual Studio 프로젝트 시스템을 확장할 수 있습니다.

또한 애플리케이션을 만들기 위해 함께 작동하는 하나 이상의 프로젝트의 그룹인 솔루션에 프로젝트를 함께 수집할 수 있습니다. 솔루션과 관련된 프로젝트 및 상태 정보는 텍스트 기반 솔루션(.sln) 파일 및 바이너리 솔루션 사용자 옵션(.suo) 파일의 두 솔루션 파일에 저장됩니다. 이러한 파일은 이전 버전의 Visual Basic에 사용된 그룹(.vbg) 파일, 작업 영역(.dsw) 및 이전 버전의 C++에 사용된 사용자 옵션(.opt) 파일과 비슷합니다.

자세한 내용은 프로젝트솔루션을 참조하세요.

프로젝트 및 항목 템플릿

Visual Studio에는 미리 정의된 프로젝트 템플릿과 프로젝트 항목 템플릿이 포함되어 있습니다. 자체 템플릿을 만들거나 커뮤니티에서 템플릿을 가져온 다음, Visual Studio에 통합할 수도 있습니다. MSDN 코드 갤러리에서 템플릿 및 확장을 찾아볼 수 있습니다.

템플릿에는 애플리케이션, 컨트롤, 라이브러리 또는 클래스의 특정 종류를 빌드하기 위해 필요한 프로젝트 구조 및 기본 파일이 포함되어 있습니다. 템플릿 중 하나와 비슷한 소프트웨어를 개발하려면 해당 템플릿을 기반으로 프로젝트를 만든 다음, 프로젝트에서 파일을 수정합니다.

참고 항목

이 템플릿 아키텍처는 Visual C++ 프로젝트에 지원되지 않습니다.

자세한 내용은 프로젝트 및 프로젝트 항목 템플릿 추가를 참조하세요.

속성 및 옵션

속성 창에는 단일 또는 다중 선택 항목의 속성이 표시됩니다. 확장 속성 옵션 페이지에는 프로그래밍 언어 또는 VSPackage와 같은 특정 구성 요소와 관련된 옵션 집합이 포함되어 있습니다. 옵션 및 옵션 페이지를 참조하세요. 설정은 일반적으로 가져오고 내보낼 수 있는 UI 관련 기능입니다. 사용자 설정 지원을 참조하세요.

Visual Studio 서비스

서비스는 구성 요소에 사용할 특정 인터페이스 집합을 제공합니다. Visual Studio는 확장을 포함하여 구성 요소에 사용될 수 있는 서비스 세트를 제공합니다. 예를 들어 Visual Studio 서비스는 도구 창을 동적으로 표시하거나 숨기고, 도움말, 상태 표시줄 또는 UI 이벤트에 대한 액세스를 사용하도록 설정합니다. 또한 Visual Studio 편집기는 편집기 확장으로 가져올 수 있는 서비스를 제공합니다. 자세한 내용은 서비스 사용 및 제공을 참조하세요.

디버거

디버거는 언어별 디버깅 구성 요소에 대한 사용자 인터페이스입니다. 새 언어 서비스를 만든 경우 디버거에 연결할 특정 디버그 엔진을 만들어야 합니다. 자세한 내용은 Visual Studio 디버거 확장성을 참조하세요.

소스 제어

원본 제어 플러그 인 또는 VSPackage 구현에 대한 자세한 내용은 원본 제어를 참조하세요.

마법사

새 프로젝트 유형과 함께 마법사를 만들어서 사용자가 해당 유형의 새 프로젝트를 만들 때 올바른 결정을 내릴 수 있도록 도와줄 수 있습니다. 자세한 내용은 마법사를 참조하세요.

사용자 지정 도구

사용자 지정 도구를 사용하면 프로젝트의 항목과 도구를 연결하고 파일이 저장될 때마다 해당 도구를 실행할 수 있습니다. 자세한 내용은 사용자 지정 도구를 참조하세요.

VSSDK 유틸리티

VSSDK에는 VSPackage의 다양한 측면을 사용하는 데 필요할 수 있는 유틸리티 세트가 포함되어 있습니다. 자세한 내용은 VSSDK 유틸리티를 참조하세요.

Windows Installer 사용

레지스트리 쓰기와 같은 일부 경우에는 VSIX 설치 프로그램 대신 Windows Installer를 사용해야 할 수 있습니다. 확장과 함께 Windows Installer를 사용하는 방법에 대한 자세한 내용은 Windows Installer를 사용하여 VSPackages 설치를 참조하세요.

도움말 뷰어

도움말 뷰어에 자체 도움말과 F1 페이지를 통합할 수 있습니다. 자세한 내용은 Microsoft 도움말 뷰어 SDK를 참조하세요.