소스 제어 패키지는 Visual Studio IDE에서 제공하는 서비스를 사용하는 VSPackage입니다. 그 대가로 소스 제어 패키지는 소스 제어 서비스로서의 기능을 제공합니다. 또한 소스 제어 패키지는 소스 제어를 Visual Studio에 통합하기 위한 소스 제어 플러그 인보다 더 다양한 대안입니다.
소스 제어 플러그 인 API를 구현하는 소스 제어 플러그 인은 엄격한 계약을 준수합니다. 예를 들어 플러그 인은 기본 Visual Studio UI(사용자 인터페이스)를 바꿀 수 없습니다. 또한 소스 제어 플러그 인 API는 플러그 인에서 자체 소스 제어 모델을 구현할 수 없습니다. 그러나 소스 제어 패키지는 이러한 제한 사항을 모두 극복합니다. 소스 제어 패키지는 Visual Studio 사용자의 소스 제어 환경을 완벽하게 제어합니다. 또한 소스 제어 패키지는 자체 소스 제어 모델 및 논리를 사용할 수 있으며 모든 소스 제어 관련 사용자 인터페이스를 정의할 수 있습니다.
소스 제어 패키지 구성 요소
아키텍처 다이어그램에 표시된 것처럼 소스 제어 스텁이라는 Visual Studio 구성 요소는 Visual Studio와 소스 제어 패키지를 통합하는 VSPackage입니다.
소스 제어 스텁은 다음 작업을 처리합니다.
소스 제어 패키지 등록에 필요한 일반적인 UI를 제공합니다.
소스 제어 패키지를 로드합니다.
소스 제어 패키지를 활성/비활성으로 설정합니다.
소스 제어 스텁은 소스 제어 패키지에 대한 활성 서비스를 찾고 들어오는 모든 서비스 호출을 IDE에서 해당 패키지로 라우팅합니다.
소스 제어 어댑터 패키지는 Visual Studio에서 제공하는 특수 소스 제어 패키지입니다. 이 패키지는 소스 제어 플러그 인 API를 기반으로 소스 제어 플러그 인을 지원하기 위한 중앙 구성 요소입니다. 소스 제어 플러그 인이 활성 플러그 인이면 소스 제어 스텁은 해당 이벤트를 소스 제어 어댑터 패키지로 보냅니다. 소스 제어 어댑터 패키지는 소스 제어 플러그 인 API를 사용하여 소스 제어 플러그 인과 통신하며 모든 소스 제어 플러그 인에 공통적인 기본 UI도 제공합니다.
반면 소스 제어 패키지가 활성 패키지인 경우 소스 제어 스텁은 Visual Studio SDK Source-Control 패키지 인터페이스를 사용하여 패키지와 직접 통신합니다. 소스 제어 패키지는 자체 소스 제어 UI를 호스팅하는 역할을 담당합니다.
소스 제어 패키지의 경우 Visual Studio는 통합을 위해 소스 제어 코드 또는 API를 제공하지 않습니다. 소스 제어 플러그 인 에서 엄격한 함수 및 콜백 집합을 구현해야 하는 소스 제어 플러그 인 만들기에 설명된 방법과 대조합니다.
VSPackage와 마찬가지로 소스 제어 패키지는 을 사용하여
CoCreateInstance만들 수 있는 COM 개체입니다. VSPackage는 IVsPackage을(를) 구현하여 Visual Studio IDE에서 사용 가능합니다. 인스턴스가 만들어지면 VSPackage는 IDE에서 사용 가능한 서비스 및 IServiceProvider 인터페이스에 대한 VSPackage 액세스를 제공하는 사이트 포인터 및 인터페이스를 받습니다.VSPackage 기반 소스 제어 패키지를 작성하려면 소스 제어 플러그 인 API 기반 플러그 인을 작성하는 것보다 고급 프로그래밍 전문 지식이 필요합니다.