다음을 통해 공유


솔루션 탐색기 도구 모음에 명령 추가

이 연습에서는 솔루션 탐색기 도구 모음에 단추를 추가하는 방법을 보여 줍니다.

도구 모음 또는 메뉴의 모든 명령을 Visual Studio에서는 단추라고 합니다. 단추를 클릭하면 명령 처리기의 코드가 실행됩니다. 일반적으로 관련 명령은 함께 그룹화되어 하나의 그룹을 형성합니다. 메뉴 또는 도구 모음은 그룹의 컨테이너 역할을 합니다. 우선 순위는 그룹의 개별 명령이 메뉴 또는 도구 모음에 표시되는 순서를 결정합니다. 표시 여부를 제어하여 도구 모음 또는 메뉴에 단추가 표시되지 않도록 할 수 있습니다. .vsct 파일의 <VisibilityConstraints> 섹션에 나열된 명령은 연결된 컨텍스트에서만 나타납니다. 표시 여부는 그룹에 적용할 수 없습니다.

메뉴, 도구 모음 명령, .vsct 파일에 대한 자세한 내용은 명령, 메뉴, 도구 모음을 참조하세요.

참고 항목

명령 테이블 구성(.ctc) 파일 대신 XML 명령 테이블(.vsct) 파일을 사용하여 VSPackage에 메뉴와 명령이 표시되는 방식을 정의합니다. 자세한 내용은 Visual Studio 명령 테이블(.Vsct) 파일을 참조하세요.

메뉴 명령을 사용하여 확장 만들기

SolutionToolbar라는 VSIX 프로젝트를 만듭니다. ToolbarButton이라는 메뉴 명령 항목 템플릿을 추가합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 메뉴 명령을 사용하여 확장 만들기를 참조하세요.

솔루션 탐색기 도구 모음에 단추 추가

연습의 이 섹션에서는 솔루션 탐색기 도구 모음에 단추를 추가하는 방법을 보여 줍니다. 단추를 클릭하면 콜백 메서드의 코드가 실행됩니다.

  1. ToolbarButtonPackage.vsct 파일에서 <Symbols> 섹션으로 이동합니다. <GuidSymbol> 노드에는 패키지 템플릿에 의해 생성된 메뉴 그룹 및 명령이 포함됩니다. 이 노드에 <IDSymbol> 요소를 추가하여 명령을 보유할 그룹을 선언합니다.

    <IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
    
  2. <Groups> 섹션에서 기존 그룹 항목 뒤에 이전 단계에서 선언한 새 그룹을 정의합니다.

    <Group guid="guidToolbarButtonPackageCmdSet"
           id="SolutionToolbarGroup" priority="0xF000">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
          </Group>
    

    부모 GUID:ID 쌍을 guidSHLMainMenuIDM_VS_TOOL_PROJWIN로 설정하면 이 그룹이 솔루션 탐색기 도구 모음에 배치되고 높은 우선 순위 값을 설정하면 다른 명령 그룹 뒤에 배치됩니다.

  3. <Buttons> 섹션에서 생성된 <Button> 항목의 부모 ID를 변경하여 이전 단계에서 정의한 그룹을 반영합니다. 수정된 <Button> 요소는 다음과 같아야 합니다.

    <Button guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" priority="0x0100" type="Button">
        <Parent guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" />
        <Icon guid="guidImages" id="bmpPicStrikethrough" />
        <Strings>
            <ButtonText>Invoke ToolbarButton</ButtonText>
        </Strings>
    </Button>
    
  4. 프로젝트를 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다.

    솔루션 탐색기 도구 모음은 기존 단추 오른쪽에 새 명령 단추를 표시해야 합니다. 단추 아이콘은 취소선입니다.

  5. 새로 만들기 단추를 클릭합니다.

    ToolbarButtonPackage Inside SolutionToolbar.ToolbarButton.MenuItemCallback() 메시지가 있는 대화 상자가 표시되어야 합니다.

단추의 표시 여부 제어

연습의 이 섹션에서는 도구 모음에서 단추의 표시 여부를 제어하는 방법을 보여 줍니다. SolutionToolbar.vsct 파일의 <VisibilityConstraints> 섹션에서 컨텍스트를 하나 이상의 프로젝트로 설정하면 프로젝트가 열려 있는 경우에만 단추가 표시되도록 제한할 수 있습니다.

하나 이상의 프로젝트가 열려 있는 경우 단추를 표시하려면

  1. ToolbarButtonPackage.vsct<Buttons> 섹션에서 기존 <Button> 요소의 <Strings><Icons> 태그 사이에 두 개의 명령 플래그를 추가합니다.

    <CommandFlag>DefaultInvisible</CommandFlag>
    <CommandFlag>DynamicVisibility</CommandFlag>
    

    <VisibilityConstraints> 섹션의 항목이 적용될 수 있도록 DefaultInvisibleDynamicVisibility 플래그를 설정해야 합니다.

  2. 두 개의 <VisibilityItem> 항목이 있는 <VisibilityConstraints> 섹션을 만듭니다. 닫는 </Commands> 태그 바로 뒤에 새 섹션을 배치합니다.

    <VisibilityConstraints>
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasSingleProject" />
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasMultipleProjects" />
    </VisibilityConstraints>
    

    각 표시 여부 항목은 지정된 단추가 표시되는 조건을 나타냅니다. 여러 조건을 적용하려면 동일한 단추에 대해 여러 항목을 만들어야 합니다.

  3. 프로젝트를 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다.

    솔루션 탐색기 도구 모음에는 취소선 단추가 없습니다.

  4. 프로젝트가 포함된 솔루션을 엽니다.

    기존 단추의 오른쪽에 있는 도구 모음에 취소선 단추가 나타납니다.

  5. 파일 메뉴에서 솔루션 닫기를 클릭합니다. 도구 모음에서 단추가 사라집니다.

    VSPackage가 로드될 때까지 Visual Studio에서 단추의 표시 여부를 제어합니다. VSPackage가 로드된 후 단추의 표시 여부는 VSPackage에 의해 제어됩니다. 자세한 내용은 MenuCommands 및 OleMenuCommands를 참조하세요.