public static async Task <IVsHierarchy> ToVsHierarchyAsync(this EnvDTE.Project project)
        {
            await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            IVsHierarchy hierarchy;

            // Get the vs solution
            var solution = await ServiceLocator.GetInstanceAsync <IVsSolution>();

            int hr = solution.GetProjectOfUniqueName(project.GetUniqueName(), out hierarchy);

            if (hr != VSConstants.S_OK)
            {
                Marshal.ThrowExceptionForHR(hr);
            }

            return(hierarchy);
        }
Exemplo n.º 2
0
        public static async Task CollapseAllNodesAsync(IDictionary <string, ISet <VsHierarchyItem> > ignoreNodes)
        {
            Common.Verify.ArgumentIsNotNull(ignoreNodes, nameof(ignoreNodes));

            await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            var dte = await ServiceLocator.GetInstanceAsync <EnvDTE.DTE>();

            var projects = dte.Solution.Projects;

            foreach (var project in projects.Cast <EnvDTE.Project>())
            {
                ISet <VsHierarchyItem> expandedNodes;
                if (ignoreNodes.TryGetValue(project.GetUniqueName(), out expandedNodes)
                    &&
                    expandedNodes != null)
                {
                    await CollapseProjectHierarchyItemsAsync(project, expandedNodes);
                }
            }
        }
Exemplo n.º 3
0
        public static async TaskExpandedNodes GetAllExpandedNodesAsync()
        {
            // this operation needs to execute on UI thread
            await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            var dte = await ServiceLocator.GetInstanceAsync <EnvDTE.DTE>();

            var projects = dte.Solution.Projects;

            var results = new Dictionary <string, ISet <VsHierarchyItem> >(StringComparer.OrdinalIgnoreCase);

            foreach (var project in projects.Cast <EnvDTE.Project>())
            {
                var expandedNodes =
                    await GetExpandedProjectHierarchyItemsAsync(project);

                Debug.Assert(!results.ContainsKey(project.GetUniqueName()));
                results[project.GetUniqueName()] =
                    new HashSet <VsHierarchyItem>(expandedNodes);
            }
            return(results);
        }