Разработка VSIX - получение пути к папке при открытии контекстного меню в обозревателе решений - PullRequest
0 голосов
/ 11 октября 2019

Я пока не нашел решения для этого.

Я добавил пункт меню в контекстное меню, когда щелкнул правой кнопкой мыши узел папки в обозревателе решений. При нажатии мне нужен полный путь к папке, по которой щелкнули.

Этот фрагмент кода я нашел, чтобы найти выбранный проект или projectItem.

        IntPtr hierarchyPointer, selectionContainerPointer;
        Object selectedObject = null;
        IVsMultiItemSelect multiItemSelect;
        uint projectItemId;

        IVsMonitorSelection monitorSelection =
                (IVsMonitorSelection)Package.GetGlobalService(
                typeof(SVsShellMonitorSelection));

        monitorSelection.GetCurrentSelection(out hierarchyPointer,
                                             out projectItemId,
                                             out multiItemSelect,
                                             out selectionContainerPointer);

        IVsHierarchy selectedHierarchy = Marshal.GetTypedObjectForIUnknown(
                                             hierarchyPointer,
                                             typeof(IVsHierarchy)) as IVsHierarchy;

        if (selectedHierarchy != null)
        {
            selectedHierarchy.GetProperty(
                                              projectItemId,
                                              (int)__VSHPROPID.VSHPROPID_ExtObject,
                                              out selectedObject);
        }

        Project selectedProject = selectedObject as Project;

Очевидно, это будет работать для файлов проекта. Но мое расширение будет работать только при щелчке правой кнопкой мыши по узлам папок. Есть указатели?

...