2015-02-24 1 views
4

Я разрабатываю Visual Studio Extension (VSIX).В VS Solution Explorer, как расширить меню правого щелчка на элементах подкода исходного файла (класс/метод/поле)

мне нужно добавить пользовательские меню правой кнопкой мыши на обозревателе решений щелкните правой кнопкой мыши на класс/методов/полей элементов, которые можно найти по пунктам файла Источник:

enter image description here

В .vsct файл I уже расширить проект/исходный файл Проводник решения папки// ссылки правых панелей CLICK так:

<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100"> 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" /> 
</CommandPlacement> 
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100"> 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" /> 
</CommandPlacement> 
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100"> 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_FOLDERNODE" /> 
</CommandPlacement> 
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100"> 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_REFERENCE" /> 
</CommandPlacement>  

Я перепробовал все другие ценности я нашел без особого успеха:

IDM_VS_CTXT_CODEWIN 
IDM_VS_CTXT_XPROJ_MULTIITEM 
IDM_VS_CTXT_XPROJ_PROJITEM 
IDM_VS_CTXT_NOCOMMANDS 
IDM_VS_CTXT_REFERENCEROOT 

Благодарим за помощь.

(Обратите внимание, что у меня уже есть хитрый код, чтобы разрешить правый щелчок элемента кода, вызывается из IVsSelectionEvents.OnSelectionChanged(), перед QueryStatus() обработчики запускаются)

ответ

6

См:

Using EnableVSIPLogging to identify menus and commands with VS 2005 + SP1

и:

How to find Command GUID:ID pairs


Спасибо Карлос, я сделал эту работу :) Итак, давайте немного объясним. Во-первых, как описано в настройках блога после ввода в:

ключа системного реестра
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\General] 
"EnableVSIPLogging"=dword:00000001 

Затем снова starded VS2013, удерживая Ctrl + Shift и щелкните правой кнопкой мыши файл класса-контента в SlnExplorer окне. Я получил это:

enter image description here

Guid является guidSHLMainMenu один, но мне нужно, чтобы получить идентификатор команды из значения 1842 (0x0732 в шестнадцатеричном). Я googled немного и нашел this answer. У меня установлен VS2013 SDK. Я искал, где находился файл заголовка vsshlids.h. Это было в:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VSSDK\VisualStudioIntegration\Common\Inc 

В этом каталоге я сделал поиск на любом текстовом файле, который содержит 732. И я нашел

#define IDM_VS_CTXT_PROJWIN_FILECONTENTS   0x732 // Context menu for GraphNode items in the Solution Explorer 

в

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h 

Поэтому имя, которое я искал это IDM_VS_CTXT_PROJWIN_FILECONTENTS и действительно с этим значением, он работает как шарм; Спасибо Карлосу!