public static string GetSelectedProjectPath()

in src/PortingAssistantExtensionClientShared/Utils/SolutionUtils.cs [124:156]


        public static string GetSelectedProjectPath()
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            try
            {
                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)
                {
                    Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(selectedHierarchy.GetProperty(
                                                      projectItemId,
                                                      (int)__VSHPROPID.VSHPROPID_ExtObject,
                                                      out selectedObject));
                    Project selectedProject = selectedObject as Project;
                    if (selectedProject!=null) return selectedProject.FileName;
                }
                return "";
            }
            catch(Exception e)
            {
                return "";
            }
        }