2014-11-13 1 views
2

Visual Studio 솔루션 탐색기를 마우스 오른쪽 단추로 클릭 할 때 추가 메뉴 항목에 하위 메뉴를 추가하려면 어떻게합니까?솔루션 탐색기의 솔루션 또는 프로젝트 노드 메뉴 추가 항목

표시 할 단일 하위 메뉴 항목을 추가해야합니다. n Visual Studio 솔루션을 마우스 오른쪽 단추로 클릭하고 해당 메뉴에서 추가 옵션으로 이동하십시오.

.vsct (vs package)를 사용하려고합니다. ... 가치 제안

물론

답변

7

, 거기에 비슷한 질문이지만,이 특별한 경우 것으로 보인다와 일반적으로

를 도와주세요, 당신은 - 명령 menu's 및 패키지 ID를 알 필요가 당신은 연장하기를 원합니다. 일반적으로이 문서에서 설명한대로 EnableVSIPLogging 옵션을 레지스트리에서 사용하도록 설정하면이 작업을 수행합니다. http://blogs.msdn.com/b/dr._ex/archive/2007/04/17/using-enablevsiplogging-to-identify-menus-and-commands-with-vs-2005-sp1.aspx. EnableVSIPLogging 옵션은 Visual Studio 2005에 도입되었지만 최신 버전에서도 계속 작동합니다. EnableVSIPLogging 옵션이 활성화되면 Ctrl 키 + 시프트를 누른 상태에서

, 당신은 메뉴 항목 (또는 명령으로 상호 연결되어 다른 UI 요소)를 클릭하여 원하는 정보를 표시 할 수 있습니다. 패키지 guid 및 명령/메뉴 ID를 포함하는 메시지 상자가 표시됩니다. Ctrl + C은 표시된 메뉴 또는 명령 데이터를 클립 보드에 복사합니다 (btw). 메뉴 데이터에 관심이있는 경우 (컨텍스트 메뉴 인 경우 Ctrl + Shift) 항목을 가리 키기 전에 해당 항목을 선택하십시오. 메뉴의 정보가보다 당신의 VSCT 파일을 제작에 사용할 수 있습니다

--------------------------- 
VSDebug Message 
--------------------------- 
Menu data: 
Guid = {D309F791-903F-11D0-9EFC-00A0C911004F} 
GuidID = 4 
CmdID = 850 
Type = 0x00000100 
Flags = 0x00000000 
NameLoc = A&dd 
--------------------------- 
OK 
--------------------------- 

이 내 컴퓨터에있어 무엇

...; 이 질문은 당신의 관심사 일 수 있습니다 : Using vsx how do you create a sub menu with commands?

다른 질문의 대답을 읽는 동안,이 사람들이 명령 guids의 이름을 어떻게 생각했는지 궁금 할 수도 있습니다. 그 이름은 vsshlids.h 헤더 파일로 정의됩니다. Visual Studio SDK에 포함되어 있습니다. 우리가 찾을 위에 그래서, GUID에 대한

// Guid for Shell's group and menu ids 
DEFINE_GUID (guidSHLMainMenu, 
    0xd309f791, 0x903f, 0x11d0, 0x9e, 0xfc, 0x00, 0xa0, 0xc9, 0x11, 0x00, 0x4f); 

우리는 그룹 정의에 대한 guidSHLMainMenu을 사용할 수는 ...

<Group guid="your-command-set" id="your-group-id"> 
    <Parent guid="guidSHLMainMenu" id="..." /> 
</Group> 

가 나는 IDM_VS_CTXT_ 상수 (또는 뭔가 비슷한)에서 찾을 것으로 예상 ... 표시 명령 ID와 일치하는 vsshlids.h이지만 그 대신 ... cmdidShellWindowNavigate7cmdidShellWindowNavigate5 상수가 stdidcmd.h에 있음을 알았습니다. 그냥 내가 새로운 정의보다 ...

가 우선이 두 개의 명령 그룹에 대한 새로운 ID-문자를 만든 ...

<IDSymbol name="grpIdProjectContextAdd" value="0x1080" /> 
<IDSymbol name="grpIdSolutionContextAdd" value="0x1081" /> 

그리고 명령 ...

<IDSymbol name="cmdIdAddItemHelloWorld" value="0x1082" /> 

그들을 밖으로 시도 여러 떼; 얻은 명령 식별자를 부모로 사용했습니다 ...

<Groups> 
    <Group guid="your-command-set" id="grpIdProjectContextAdd"> 
     <Parent guid="guidSHLMainMenu" id="cmdidShellWindowNavigate7" /> 
    </Group> 
    <Group guid="your-command-set" id="grpIdSolutionContextAdd"> 
     <Parent guid="guidSHLMainMenu" id="cmdidShellWindowNavigate5" /> 
    </Group> 
</Groups> 

물론 버튼이 필요합니다 (기본적으로 프로젝트의 Add 메뉴에 있음).

<Commands> 
    <Button guid="your-command-set" 
      id="cmdIdAddItemHelloWorld" priority="0x1100" type="Button"> 
     <Parent guid="your-command-set" id="grpIdProjectContextAdd" /> 
     <Strings> 
      <ButtonText>Hello World</ButtonText> 
     </Strings> 
    </Button> 
</Commands> 

이 나를 위해

<CommandPlacements> 
    <CommandPlacement guid="your-command-set" 
         id="cmdIdAddItemHelloWorld" priority="0x1100"> 
     <Parent guid="your-command-set" id="grpIdSolutionContextAdd" /> 
    </CommandPlacement> 
</CommandPlacements> 

... 버튼이 또한 솔루션 노드의 Add 메뉴에서 내가 명령 배치를 사용하여 표시하려면, 그것은 사용하기 조금 해키 느끼는 cmdidShellWindowNavigate7cmdidShellWindowNavigate5 상수,하지만 결과에 내가있어이 ...

enter image description here

+0

당신이 링크를 제공하시기 바랍니다 수 있습니다 예제 코드로 파일을 만드시겠습니까? – Epsil0neR

+1

@Matze,이게 정말 도움이되었습니다. "cmdidShellWindowNavigate7"이 실제로 "프로젝트"추가 메뉴라는 것을 어떻게 알았는지 아직 모르겠으므로 vsct에 대한 설명서를 찾고 싶습니다. – Easly

관련 문제