이 문서에서는 .vsct 파일을 작성하여 메뉴 항목, 도구 모음 및 기타 UI(사용자 인터페이스) 요소를 Visual Studio IDE(통합 개발 환경)에 추가하는 방법을 보여 줍니다. 아직 .vsct 파일이 없는 VSPackage(Visual Studio 패키지)에 UI 요소를 추가할 때 다음 단계를 사용합니다.
새 프로젝트의 경우 선택 항목에 따라 메뉴 명령, 도구 창 또는 사용자 지정 편집기에 필요한 요소가 이미 있는 .vsct 파일을 생성하기 때문에 Visual Studio 패키지 템플릿을 사용하는 것이 좋습니다. VSPackage의 요구 사항을 충족하도록 이 .vsct 파일을 수정할 수 있습니다. .vsct 파일을 수정하는 방법에 대한 자세한 내용은 확장 메뉴 및 명령의 예제를 참조하세요.
파일 작성
다음 단계에서 .vsct 파일을 작성합니다. 파일 및 리소스에 대한 구조를 만들고, UI 요소를 선언하고, IDE에 UI 요소를 배치하고, 특수한 동작을 추가합니다.
파일 구조
.vsct 파일의 기본 구조는 Commands 요소와 Symbols 요소를 포함하는 CommandTable 루트 요소입니다.
파일 구조를 만들려면
방법: .vsct 파일 만들기의 단계에 따라 프로젝트에 .vsct 파일을 추가합니다.
다음 예제와 같이 요소에
CommandTable필요한 네임스페이스를 추가합니다.<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">CommandTable요소 안에Commands요소를 추가하여 모든 사용자 지정 메뉴, 도구 모음, 명령 그룹 및 명령을 호스트하십시오. 사용자 지정 UI 요소를 로드할 수 있도록 요소의Commands특성이Package패키지 이름으로 설정되어야 합니다.요소 뒤의
Commands요소를 추가하여Symbols패키지의 GUID와 UI 요소의 이름 및 명령 ID를 정의합니다.
Visual Studio 리소스 포함
Extern 요소를 사용하여 Visual Studio 명령을 정의하는 파일 및 UI 요소를 IDE에 배치하는 데 필요한 메뉴에 액세스합니다. 패키지 외부에서 정의된 명령을 사용하는 경우 UsedCommands 요소를 사용하여 Visual Studio에 알릴 수 있습니다.
Visual Studio 리소스를 포함하려면
요소 맨
CommandTable위에 참조할 각 외부 파일에 대해 하나의Extern요소를 추가하고 특성을 파일 이름으로 설정합니다href. 다음 헤더 파일을 참조하여 Visual Studio 리소스에 액세스할 수 있습니다.Stdidcmd.h: Visual Studio에서 노출하는 모든 명령에 대한 ID를 정의합니다.
Vsshlids.h: Visual Studio 메뉴에 대한 명령 ID를 포함합니다.
패키지가 Visual Studio 또는 다른 패키지에서 정의한 명령을 호출하는 경우 요소 뒤의
UsedCommandsCommands요소를 추가합니다. 이 요소를 패키지의 일부가 아닌 호출하는 각 명령에 대해 UsedCommand 요소로 채웁다. 요소의guidid특성과UsedCommand특성을 호출할 명령의 GUID 및 ID 값으로 설정합니다.Visual Studio 명령의 GUID 및 ID를 찾는 방법에 대한 자세한 내용은 Visual Studio 명령 의 GUID 및 ID를 참조하세요. 다른 패키지에서 명령을 호출하려면 해당 패키지에 대한 .vsct 파일에 정의된 대로 명령의 GUID 및 ID를 사용합니다.
UI 요소 선언
Symbols 섹션에서 모든 새 UI 요소를 .vsct 파일에 선언합니다.
UI 요소를 선언하려면
Symbols요소 안에 세 개의 GuidSymbol 요소를 추가합니다. 각GuidSymbol요소에는 특성name과 특성value가 있습니다. 요소의 용도를name반영하도록 특성을 설정합니다.value속성은 GUID를 사용합니다. GUID를 생성하려면 도구 메뉴에서 GUID 만들기를 선택한 다음 레지스트리 형식을 선택합니다.첫 번째
GuidSymbol요소는 패키지를 나타내며 일반적으로 자식이 없습니다. 두 번째GuidSymbol요소는 명령 집합을 나타내며 메뉴, 그룹 및 명령을 정의하는 모든 기호를 포함합니다. 세 번째GuidSymbol요소는 이미지 저장소를 나타내며 명령에 대한 모든 아이콘에 대한 기호를 포함합니다. 아이콘을 사용하는 명령이 없는 경우 세 번째GuidSymbol요소를 생략할 수 있습니다.GuidSymbol명령 집합을 나타내는 요소에서 하나 이상의 IDSymbol 요소를 추가합니다. 이러한 각 항목은 UI에 추가하는 메뉴, 도구 모음, 그룹 또는 명령을 나타냅니다.각
IDSymbol요소의name특성을 해당 메뉴, 그룹 또는 명령을 참조하는 데 사용할 이름으로 설정하고,value요소를 해당 명령 ID를 나타내는 16진수로 설정합니다. 부모가 같은 두IDSymbol요소가 동일한 값을 가질 수 없습니다.UI 요소에 아이콘이 필요한 경우, 각 아이콘의
GuidSymbol요소를 이미지 저장소를 나타내는IDSymbol요소에 추가합니다.
IDE에 UI 요소 배치
메뉴, 그룹 및 단추 요소에는 패키지에 정의된 모든 메뉴, 그룹 및 명령에 대한 정의가 포함됩니다. UI 요소 정의의 일부인 Parent 요소를 사용하거나 다른 곳에서 정의된 CommandPlacement 요소를 사용하여 이러한 메뉴, 그룹 및 명령을 IDE에 배치합니다.
각 Menu, Group, 및 Button 요소는 guid 특성과 id 특성을 가지고 있습니다.
guid 특성을 항상 명령 집합을 나타내는 GuidSymbol 요소의 이름과 일치하도록 설정하고, id 특성을 섹션의 메뉴, 그룹 또는 명령을 나타내는 IDSymbol 요소의 이름으로 설정하십시오Symbols.
UI 요소를 정의하려면
새 메뉴, 하위 메뉴, 바로 가기 메뉴 또는 도구 모음을 정의하는 경우,
Commands요소에Menus요소를 추가합니다. 그런 다음 각 메뉴를 만들려면 요소에 Menu 요소를 추가합니다Menus.Menu요소의guid및id특성을 설정한 다음,type특성을 원하는 메뉴 종류로 설정합니다. 부모 그룹에서 메뉴의priority상대 위치를 설정하도록 특성을 설정할 수도 있습니다.비고
이 특성은
priority도구 모음 및 상황에 맞는 메뉴에 적용되지 않습니다.Visual Studio IDE의 모든 명령은 메뉴 및 도구 모음의 직접 자식인 명령 그룹에서 호스트되어야 합니다. IDE에 새 메뉴 또는 도구 모음을 추가하는 경우 새 명령 그룹이 포함되어야 합니다. 명령을 시각적으로 그룹화할 수 있도록 기존 메뉴 및 도구 모음에 명령 그룹을 추가할 수도 있습니다.
새 명령 그룹을 추가할 때는 먼저
Groups요소를 생성하고, 그런 다음 각 명령 그룹에 대해 Group 요소를 추가해야 합니다.각 요소의
guid특성 및id특성을 설정한 다음, 부모 메뉴에서 그룹의 상대 위치를 설정하도록 특성을 설정합니다Group.priority자세한 내용은 재사용 가능한 단추 그룹 만들기를 참조하세요.IDE에 새 명령을 추가하는 경우,
Commands요소에Buttons요소를 추가하십시오. 그런 다음 각 명령에 대해 요소에 Button 요소를 추가합니다Buttons.각 요소의
guid특성 및id특성을 설정한 다음 특성을 원하는 단추 종류로 설정합니다Button.type부모 그룹에서 명령의priority상대 위치를 설정하도록 특성을 설정할 수도 있습니다.비고
도구 모음의 표준 메뉴 명령 및 단추에 사용합니다
type="button".요소에서
ButtonButtonText 요소와 CommandName 요소가 포함된 Strings 요소를 추가합니다. 요소는ButtonText메뉴 항목의 텍스트 레이블 또는 도구 모음 단추에 대한 도구 설명을 제공합니다. 요소는CommandName명령 웰에서 사용할 명령의 이름을 제공합니다.명령에 아이콘이 있는 경우
Button요소에 Icon 요소를 만들고,guid및id특성을 아이콘의Bitmap요소로 설정하세요.비고
도구 모음 단추에는 아이콘이 있어야 합니다.
명령에 아이콘이 필요한 경우
Commands요소에 Bitmaps 요소를 추가합니다. 그런 다음 각 아이콘에 대해 Bitmap 요소를Bitmaps요소에 추가합니다. 여기서 비트맵 리소스의 위치를 지정합니다. 자세한 내용은 메뉴 명령에 아이콘 추가를 참조하세요.대부분의 메뉴, 그룹 및 명령을 올바르게 배치하려면 부모 구조에 의존할 수 있습니다. 매우 큰 명령 집합의 경우 또는 메뉴, 그룹 또는 명령이 여러 위치에 나타나야 하는 경우 명령 배치를 지정하는 것이 좋습니다.
UI 요소를 IDE에 배치하기 위해 부모-자식 구조에 의존하려면
일반적인 육아의
Parent경우 각MenuGroup요소 및Command패키지에 정의된 요소를 만듭니다.요소의
Parent대상은 메뉴, 그룹 또는 명령을 포함할 메뉴 또는 그룹입니다.guid명령 집합을 정의하는 요소의GuidSymbol이름으로 특성을 설정합니다. 대상 요소가 패키지의 일부가 아닌 경우 해당 .vsct 파일에 정의된 대로 해당 명령 집합에 대한 guid를 사용합니다.id대상 메뉴 또는 그룹의 특성과id일치하도록 특성을 설정합니다. Visual Studio에서 노출하는 메뉴 및 그룹 목록은 Visual Studio 메뉴의 GUID 및 ID 또는 Visual Studio도구 모음의 GUID 및 ID를 참조하세요.
IDE에 배치할 UI 요소가 많거나 여러 위치에 표시되어야 하는 요소가 있는 경우 다음 단계와 같이 CommandPlacements 요소에 배치를 정의합니다.
명령 배치를 사용하여 IDE에 UI 요소를 배치하려면
Commands요소 다음에CommandPlacements요소를 추가합니다.CommandPlacements요소 내에서CommandPlacement요소를 각 메뉴, 그룹 또는 명령에 추가하여 배치합니다.각
CommandPlacement요소 또는Parent요소는 하나의 IDE 위치에 하나의 메뉴, 그룹 또는 명령을 배치합니다. UI 요소에는 하나의 부모만 있을 수 있지만 여러 명령 배치가 있을 수 있습니다. 여러 위치에 UI 요소를 배치하려면 각 위치에 대한 요소를 추가CommandPlacement합니다.각
CommandPlacement요소의guid및id특성을Parent요소와 마찬가지로 호스팅 메뉴 또는 그룹으로 설정합니다.priority속성을 설정하여 UI 요소의 상대 위치를 설정할 수도 있습니다.육아 및 명령 배치를 통해 배치를 혼합할 수 있습니다. 그러나 매우 큰 명령 집합의 경우 명령 배치만 사용하는 것이 좋습니다.
특수한 동작 추가
CommandFlag 요소를 사용하여 메뉴 및 명령의 동작(예: 모양 및 표시 여부 변경)을 수정할 수 있습니다. VisibilityConstraints 요소를 사용하여 명령이 표시되는 경우에 영향을 주거나 KeyBindings 요소를 사용하여 바로 가기 키를 추가할 수도 있습니다. 특정 종류의 메뉴 및 명령에는 이미 특수한 동작이 기본 제공됩니다.
특수한 동작을 추가하려면
예를 들어 솔루션이 로드될 때 특정 UI 컨텍스트에서만 UI 요소를 표시하려면 표시 유형 제약 조건을 사용합니다.
Commands요소 다음에VisibilityConstraints요소를 추가합니다.제한할 각 UI 항목에 VisibilityItem 요소를 추가하십시오.
각
VisibilityItem요소에 대해guid및id특성을 메뉴, 그룹 또는 명령으로 설정한 후, UIContextGuids80 클래스에 정의된 대로context특성을 원하는 UI 컨텍스트로 설정하십시오.
코드에서 UI 항목의 표시 유형 또는 가용성을 설정하려면 다음 명령 플래그 중 하나 이상을 사용합니다.
DefaultDisabledDefaultInvisibleDynamicItemStartDynamicVisibilityNoShowOnMenuControllerNotInTBList
자세한 내용은 CommandFlag 요소를 참조하세요.
요소가 표시되는 방식을 변경하거나 동적으로 모양을 변경하려면 다음 명령 플래그 중 하나 이상을 사용합니다.
AlwaysCreateCommandWellOnlyDefaultDockedDontCacheDynamicItemStartFixMenuControllerIconAndTextPictStretchHorizontallyTextMenuUseButtonTextChangesTextOnly
자세한 내용은 CommandFlag 요소를 참조하세요.
요소가 명령을 받을 때 반응하는 방식을 변경하려면 다음 명령 플래그 중 하나 이상을 사용합니다.
AllowParamsCaseSensitiveCommandWellOnlyFilterKeysNoAutoCompleteNoButtonCustomizeNoKeyCustomizeNoToolbarClosePostExecRouteToDocsTextIsAnchorCommand
자세한 내용은 CommandFlag 요소를 참조하세요.
메뉴 또는 메뉴의 항목에 메뉴 종속 바로 가기 키를 연결하려면 메뉴 또는 메뉴 항목의 요소에
ButtonText앰퍼샌드 문자(>)를 추가합니다. 앰퍼샌드 뒤에 있는 문자는 부모 메뉴가 열릴 때 활성 바로 가기 키입니다.메뉴 독립적 바로 가기 키를 명령에 연결하려면 KeyBindings 요소를 사용합니다. 자세한 내용은 KeyBinding 요소를 참조하세요.
메뉴 텍스트를 지역화하려면 요소를 사용합니다
LocCanonicalName. 자세한 내용은 Strings 요소를 참조하세요.일부 메뉴 및 단추 유형에는 특수한 동작이 포함됩니다. 다음 목록에서는 몇 가지 특수 메뉴 및 단추 유형에 대해 설명합니다. 다른 형식은
types, 단추 및 콤보 요소의 특성 설명을 참조 하세요.콤보 상자: 콤보 상자는 도구 모음에서 사용할 수 있는 드롭다운 목록입니다. UI에 콤보 상자를 추가하려면 요소에
Commands요소를 만듭니다. 그런 다음 추가할 각 콤보 상자에 대해Combos요소에Combo요소를 추가합니다.Combo요소는Button요소와 동일한 특성과 자식을 가지며,DefaultWidth및idCommandList특성도 가지고 있습니다. 특성은DefaultWidth너비를 픽셀 단위로 설정하고 특성idCommandList은 콤보 상자를 채우는 데 사용되는 명령 ID를 가리킵니다.메뉴 컨트롤러: 메뉴 컨트롤러는 옆에 화살표가 있는 단추입니다. 화살표를 클릭하면 목록이 열립니다. UI에 메뉴 컨트롤러를 추가하려면
Menu요소를 만들고, 원하는 동작에 따라type또는MenuController로 특성을 설정하십시오MenuControllerLatched. 메뉴 컨트롤러를 채우기 위해Group요소의 부모로 설정하세요. 메뉴 컨트롤러는 해당 그룹의 모든 자식을 드롭다운 목록에 표시합니다.