コード例 #1
0
        public void SetSolution(IVsSolution solution)
        {
            if (_listener != null)
            {
                throw new InvalidOperationException("Cannot set solution multiple times");
            }

            if (solution != null)
            {
                _listener = new SolutionEventsListener(solution);
                _listener.ProjectLoaded    += Solution_ProjectLoaded;
                _listener.ProjectClosing   += Solution_ProjectUnloading;
                _listener.ProjectUnloading += Solution_ProjectUnloading;
                _listener.StartListeningForChanges();

                lock (_providers) {
                    foreach (var project in solution.EnumerateLoadedProjects()
                             .Select(p => p.GetPythonProject())
                             .Where(p => p != null))
                    {
                        _providers[project.Interpreters] = project;
                    }
                }
            }
        }
コード例 #2
0
        public void SetSolution(IVsSolution solution) {
            if (_listener != null) {
                throw new InvalidOperationException("Cannot set solution multiple times");
            }

            if (solution != null) {
                _listener = new SolutionEventsListener(solution);
                _listener.ProjectLoaded += Solution_ProjectLoaded;
                _listener.ProjectClosing += Solution_ProjectUnloading;
                _listener.ProjectUnloading += Solution_ProjectUnloading;
                _listener.StartListeningForChanges();

                lock (_providers) {
                    foreach (var project in solution.EnumerateLoadedProjects()
                        .Select(p => p.GetPythonProject())
                        .Where(p => p != null)) {
                        _providers[project.Interpreters] = project;
                    }
                }
            }
        }
コード例 #3
0
ファイル: Extensions.cs プロジェクト: zjherp/nodejstools
        internal static IEnumerable <HierarchyItem> EnumerateHierarchyItems(this IVsSolution solution)
        {
            var loadedProjects = solution.EnumerateLoadedProjects(onlyNodeProjects: false);

            foreach (var project in loadedProjects)
            {
                var hierarchy = (IVsHierarchy)project;
                foreach (var projectItem in project.EnumerateProjectItems((uint)(__VSEHI.VSEHI_Leaf | __VSEHI.VSEHI_Nest | __VSEHI.VSEHI_OmitHier | __VSEHI.VSEHI_Branch)))
                {
                    ErrorHandler.ThrowOnFailure(hierarchy.GetProperty(projectItem, (int)__VSHPROPID.VSHPROPID_Name, out var name));
                    ErrorHandler.ThrowOnFailure(hierarchy.GetProperty(projectItem, (int)__VSHPROPID.VSHPROPID_Parent, out var parentId));

                    yield return(new HierarchyItem()
                    {
                        ItemId = projectItem,
                        Name = (string)name,
                        ParentId = (int)parentId
                    });
                }
            }
        }
コード例 #4
0
 public static IEnumerable <IVsProject> GetLoadedProjects(this IVsSolution solution)
 {
     return(solution.EnumerateLoadedProjects(__VSENUMPROJFLAGS.EPF_LOADEDINSOLUTION).OfType <IVsProject>());
 }
コード例 #5
0
ファイル: Solution.cs プロジェクト: shohel1980/poshtools-dev
 public Solution(IVsSolution solution)
 {
     Projects = solution.EnumerateLoadedProjects(__VSENUMPROJFLAGS.EPF_LOADEDINSOLUTION).OfType <IVsProject>().Select(m => new Project(m));
 }