등록 및 선택(소스 제어 VSPackage)
Visual Studio에 노출하려면 소스 제어 VSPackage를 등록해야 합니다. 둘 이상의 소스 제어 VSPackage가 등록된 경우 사용자는 적절한 시간에 로드할 VSPackage를 선택할 수 있습니다. VSPackage에 대한 자세한 내용 및 등록 방법은 VSPackage를 참조하세요.
소스 제어 패키지 등록
Visual Studio 환경에서 소스 제어 패키지를 찾아 지원되는 기능을 쿼리할 수 있도록 소스 제어 패키지가 등록됩니다. 이 작업은 패키지의 기능 또는 명령이 필요하거나 명시적으로 요청된 경우에만 패키지 인스턴스가 만들어지는 지연 로드 체계에 따라 수행됩니다.
VSPackage는 버전별 레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\X.Y에 정보를 저장합니다. 여기서 X는 주 버전 번호이고 Y는 부 버전 번호입니다. 이 연습에서는 여러 버전의 Visual Studio를 병렬로 설치할 수 있는 기능을 제공합니다.
Visual Studio UI(사용자 인터페이스)는 소스 제어 어댑터 패키지를 통해 설치된 여러 소스 제어 플러그 인과 소스 제어 VSPackage 중에서 선택할 수 있습니다. 한 번에 하나의 활성 소스 제어 플러그 인 또는 VSPackage만 있을 수 있습니다. 그러나 아래에 설명된 대로 IDE를 사용하면 자동 솔루션 기반 패키지 교환 메커니즘을 통해 소스 제어 플러그 인과 VSPackage 간을 전환할 수 있습니다. 이 선택 메커니즘을 사용하도록 설정하려면 소스 제어 VSPackage 부분에 몇 가지 요구 사항이 있습니다.
레지스트리 항목
소스 제어 패키지에는 다음 세 개의 프라이빗 GUID가 필요합니다.
패키지 GUID: 소스 제어 구현(이 섹션의 ID_Package)을 포함하는 패키지의 기본 GUID입니다.
소스 제어 GUID: Visual Studio 소스 제어 스텁에 등록하는 데 사용되는 소스 제어 VSPackage의 GUID이며 명령 UI 컨텍스트 GUID로도 사용됩니다. 소스 제어 서비스 GUID는 소스 제어 GUID 아래에 등록됩니다. 이 예제에서 소스 제어 GUID를 ID_SccProvider라고 합니다.
소스 제어 서비스 GUID: Visual Studio에서 사용하는 프라이빗 서비스 GUID입니다(이 섹션의 SID_SccPkgService). 이 외에도 소스 제어 패키지는 VSPackage의 다른 GUID, 도구 창 등을 정의해야 합니다.
다음 레지스트리 항목은 소스 제어 VSPackage에서 만들어야 합니다.
키 이름 | 엔트리 |
---|---|
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ |
(기본값) = rg_sz:{ID_SccProvider} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ |
(기본값) = rg_sz:<패키지의 이름> Service = rg_sz:{SID_SccPkgService} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ Name\ |
(기본값) = rg_sz:#<지역화된 이름의 리소스 ID> Package = rg_sz:{ID_Package} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SolutionPersistence\ <PackageName>\ (키 이름 SourceCodeControl 은 Visual Studio에서 이미 사용 중이며 <PackageName>에 대한 선택 항목으로 사용할 수 없습니다.) |
(기본값) = rg_sz:{ID_Package} |
소스 제어 패키지 선택
여러 소스 제어 플러그 인 API 기반 플러그 인 및 소스 제어 VSPackage를 동시에 등록할 수 있습니다. 소스 제어 플러그 인 또는 VSPackage를 선택하는 프로세스는 Visual Studio가 적절한 시간에 플러그 인 또는 VSPackage를 로드하고, 필요할 때까지 불필요한 구성 요소 로드를 연기할 수 있는지 확인해야 합니다. 또한 Visual Studio는 메뉴 항목, 대화 상자 및 도구 모음을 포함하여 다른 비활성 VSPackage에서 모든 UI를 제거하고, 활성 VSPackage에 대한 UI를 표시해야 합니다.
Visual Studio는 다음 작업 중 하나가 수행될 때 소스 제어 VSPackage를 로드합니다.
솔루션이 열려 있습니다(솔루션이 소스 제어 하에 있는 경우).
소스 제어 아래의 솔루션 또는 프로젝트를 열면 IDE는 해당 솔루션에 대해 지정된 소스 제어 VSPackage를 로드합니다.
소스 제어 VSPackage의 모든 메뉴 명령이 실행됩니다.
소스 제어 VSPackage는 실제로 사용될 경우에만 필요한 구성 요소를 로드해야 합니다(지연된 로드라고도 함).
자동 솔루션 기반 VSPackage 교환
소스 제어 범주 아래의 Visual Studio 옵션 대화 상자를 통해 수동으로 소스 제어 VSPackage를 교환할 수 있습니다. 자동 솔루션 기반 패키지 교환은 특정 솔루션에 대해 지정된 소스 제어 패키지가 해당 솔루션을 열 때 자동으로 활성으로 설정됨을 의미합니다. 모든 소스 제어 패키지는 SetActive 및 SetInactive를 구현해야 합니다. Visual Studio는 소스 제어 플러그 인(소스 제어 플러그 인 API 구현)과 소스 제어 VSPackage 간의 전환을 처리합니다.
소스 제어 어댑터 패키지는 소스 제어 플러그 인 API 기반 플러그 인으로 전환하는 데 사용됩니다. 중간 소스 제어 어댑터 패키지로 전환하고 활성 또는 비활성으로 설정해야 하는 소스 제어 플러그 인을 결정하는 프로세스는 사용자에게 투명합니다. 어댑터 패키지는 소스 제어 플러그 인이 활성 상태일 때 항상 활성화됩니다. 두 소스 제어 플러그 인 간에 전환하면 플러그 인 DLL을 로드했다가 언로드하기만 하면 됩니다. 그러나 소스 제어 VSPackage로 전환하려면 적절한 VSPackage를 로드하기 위해 IDE와 상호 작용해야 합니다.
소스 제어 VSPackage는 솔루션이 열리고 VSPackage의 레지스트리 키가 솔루션 파일에 있을 때 호출됩니다. 솔루션을 열면 Visual Studio에서 레지스트리 값을 찾아 적절한 소스 제어 VSPackage를 로드합니다. 모든 소스 제어 VSPackage에는 위에서 설명한 레지스트리 항목이 있어야 합니다. 소스 제어 상태의 솔루션은 특정 소스 제어 VSPackage와 연결된 것으로 표시됩니다. 소스 제어 VSPackage는 자동 솔루션 기반 VSPackage 교환을 사용하도록 설정하기 위해 IVsSolutionPersistence를 구현해야 합니다.
패키지 선택 및 전환용 Visual Studio UI
Visual Studio는 소스 제어 범주 아래의 옵션 대화 상자에서 소스 제어 VSPackage 및 플러그 인 선택을 위한 UI를 제공합니다. 사용자가 활성 소스 제어 플러그 인 또는 VSPackage를 선택할 수 있습니다. 드롭다운 목록에는 다음이 포함됩니다.
설치된 모든 소스 제어 패키지
설치된 모든 소스 제어 플러그 인
소스 코드 제어를 사용하지 않도록 설정하는 "none" 옵션
활성 소스 제어 선택에 대한 UI만 표시됩니다. VSPackage 선택은 이전 VSPackage의 UI를 숨기고 새 VSPackage의 UI를 표시합니다. 활성 VSPackage는 사용자별로 선택됩니다. 사용자에게 Visual Studio 복사본이 여러 개 동시에 열려 있는 경우 각 복사본은 잠재적으로 다른 활성 VSPackage를 사용할 수 있습니다. 여러 사용자가 동일한 컴퓨터에 로그온된 경우 각 사용자는 각각 다른 활성 VSPackage를 사용하여 별도의 Visual Studio 인스턴스가 열려 있을 수 있습니다. 사용자가 Visual Studio의 여러 인스턴스를 닫으면 마지막으로 열린 솔루션에 대해 활성화된 소스 제어 VSPackage가 다시 시작 시 활성으로 설정되는 기본 소스 제어 VSPackage가 됩니다.
이전 버전의 Visual Studio와 달리 IDE 다시 시작은 더 이상 소스 제어 VSPackage를 전환하는 유일한 방법이 아닙니다. VSPackage 선택은 자동입니다. 패키지를 전환하려면 Windows 사용자 권한(관리자 또는 고급 사용자 아님)이 필요합니다.