VSPackage는 Visual Studio 명령 테이블(.vsct) 파일을 통해 메뉴 항목 및 해당 기본 상태를 선언합니다. Visual Studio IDE(통합 개발 환경)는 VSPackage가 로드될 때까지 메뉴 항목을 기본 상태로 표시합니다. QueryStatus 이후에는 메뉴 항목을 사용하거나 사용하지 않도록 설정하기 위해 메서드가 호출됩니다.
VSPackage는 레지스트리 키를 설정하여 명령 UI(사용자 인터페이스) 컨텍스트에 따라 VSPackage를 자동으로 로드할 수 있지만, 일반적으로 원본 제어 VSPackage는 특정 UI 컨텍스트로 전환하는 대신 요청 시 로드해야 합니다. AutoLoadPackages 레지스트리 키에 대한 자세한 내용은 VSPackages 관리를 참조하세요.
VSPackage 사용자 인터페이스 (UI)
소스 제어 패키지는 VSPackage로 구현되며 Visual Studio의 UI를 사용하지 않습니다. 각 소스 제어 VSPackage는 소스 제어 VSPackage와 관련된 옵션을 설정하기 위해 메뉴 항목, 메뉴 그룹, 도구 창, 도구 모음 및 필요한 UI와 같은 자체 UI 요소를 지정해야 합니다. 이러한 UI 요소는 정적 또는 동적으로 사용하도록 설정할 수 있습니다. 정적 UI 요소는 .vsct 파일에 정의되며 VSPackage가 로드되었는지 여부에 관계없이 표시됩니다. 동적 UI 요소는 특정 명령 UI 컨텍스트(예: vsContextNoSolution메서드 호출 QueryStatus 결과)에 따라 표시될 수 있습니다. 동적 UI 요소의 표시 유형은 VSPackage의 지연된 로드 전략을 준수합니다.
소스 제어 VSPackage에 대한 UI 제약 조건
소스 제어 VSPackage가 로드된 후에는 IDE에서 제거할 수 없으므로 VSPackage가 비활성 상태로 들어갈 수 있어야 합니다. VSPackage가 더 이상 활성화되지 않는다는 알림을 받으면 VSPackage는 해당 UI를 사용하지 않도록 설정하고 외부 IDE 상호 작용을 무시합니다. VSPackage가 활성화되지 않은 경우 VSPackage의 QueryStatus 메서드 구현은 명령을 숨겨야 합니다.
모든 소스 관리 VSPackage는 IVsSccProvider 인터페이스를 구현해야 합니다. VSPackage에서 인터페이스 SetActive와 SetInactive의 두 메서드를 구현해야 합니다.
소스 제어 VSPackage는 IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2 등 여러 IDE 이벤트를 구독했을 수 있으며, 이러한 이벤트는 그에 의해 구현됩니다. 또한 VSPackage는 레지스트리 사용 콜백 인터페이스(예: IVsSolutionPersistence.)를 구현했을 수 있습니다. 이러한 인터페이스는 모두 비활성 상태일 때 무시해야 합니다.
다음 목록에서는 소스 제어 VSPackage의 활성 상태의 영향을 받는 인터페이스를 보여 줍니다.
프로젝트 문서 이벤트를 추적합니다.
솔루션 이벤트입니다.
솔루션 지속성 인터페이스. 비활성 상태인 경우 패키지는 .sln 및 .suo 파일에 쓰지 않아야 합니다.
속성 확장기입니다.
소스 제어 VSPackage가 비활성 상태일 때는 필수 IVsQueryEditQuerySave2 인터페이스와 IVsSccManager2소스 제어와 연결된 선택적 인터페이스도 호출되지 않습니다.
Visual Studio IDE가 시작되면 Visual Studio는 명령 UI 컨텍스트를 현재 기본 소스 제어 VSPackage ID의 ID로 설정합니다. 이렇게 하면 실제로 VSPackage를 로드하지 않고 활성 소스 제어 VSPackage의 정적 UI가 IDE에 표시됩니다. Visual Studio는 VSPackage가 Visual Studio에 등록할 수 있도록 IVsRegisterScciProvider에서 잠시 멈춥니다. 이는 VSPackage를 호출하기 전에 이루어집니다.
다음 표에서는 Visual Studio IDE가 다른 UI 항목을 숨기는 방법에 대한 구체적인 세부 정보를 설명합니다.
| UI 항목 | Description |
|---|---|
| 메뉴 및 도구 모음 | 소스 제어 패키지는 초기 메뉴 및 도구 모음 표시 상태를 .vsct 파일의 VisibilityConstraints 섹션에 있는 소스 제어 패키지 ID로 설정해야 합니다. 이를 통해 Visual Studio IDE는 VSPackage를 로드하고 메서드 구현을 호출하지 않고 메뉴 항목의 QueryStatus 상태를 적절하게 설정할 수 있습니다. |
| 도구 창 | 소스 제어 VSPackage는 비활성 상태일 때 소유하는 모든 도구 창을 숨깁니다. |
| 소스 제어 VSPackage 관련 옵션 페이지 | 레지스트리 키 HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts 를 사용하면 VSPackage가 옵션 페이지를 표시해야 하는 컨텍스트를 설정할 수 있습니다. 이 키 아래에 있는 레지스트리 항목은 소스 제어 서비스의 SID(서비스 ID)를 사용하고 DWORD 값 1을 할당하여 만들어야 합니다. 소스 제어 VSPackage가 등록된 컨텍스트에서 UI 이벤트가 발생할 때마다 VSPackage가 활성 상태인 경우 호출됩니다. |