Пример #1
0
        //private class ProjectItemAndTypeEqualityComparer : IEqualityComparer<ProjectItemAndType>
        //{
        //    public bool Equals(ProjectItemAndType x, ProjectItemAndType y)
        //    {
        //        return String.Equals(x.ProjectItem.Name, y.ProjectItem.Name, StringComparison.OrdinalIgnoreCase) &&
        //               String.Equals(x.Type.Class, y.Type.Class, StringComparison.OrdinalIgnoreCase) &&
        //               String.Equals(x.Type.Namespace, y.Type.Namespace, StringComparison.OrdinalIgnoreCase);
        //    }

        //    public int GetHashCode(ProjectItemAndType obj)
        //    {
        //        return ($"{obj.ProjectItem.Name};{obj.Type.Namespace}.{obj.Type.Class}").GetHashCode();
        //    }
        //}

        private void ReloadSolution()
        {
            SolutionLoadState = SolutionLoadState.Loading;

            // Load solution into _solution.
            lock (_solutionLock)
            {
                var solution = _mvvmToolsPackage.Ide.Solution;

                var solutionModel = new ProjectModel(
                    Path.GetFileNameWithoutExtension(solution.FullName),
                    solution.FullName,
                    null,
                    ProjectKind.Solution,
                    null,
                    null);

                // Add each of the top level projects and children to the local solutionModel.
                var topLevelProjects = solution.Projects.Cast <Project>().Where(p => p.Name != "Solution Items").ToArray();

                foreach (var p in topLevelProjects)
                {
                    var projectModels = GetProjectModelsRecursive(p);
                    solutionModel.Children.AddRange(projectModels);
                }

                // Set the backing field as to not create a deadlock on _solutionLock.
                _solution = solutionModel;
            }

            SolutionLoadState = SolutionLoadState.Loaded;
        }
Пример #2
0
 int IVsSolutionEvents3.OnAfterCloseSolution(object pUnkReserved)
 {
     SolutionLoadState = SolutionLoadState.NoSolution;
     return(VsConstants.S_OK);
 }
Пример #3
0
 int IVsSolutionEvents3.OnBeforeCloseSolution(object pUnkReserved)
 {
     SolutionLoadState = SolutionLoadState.Unloading;
     return(VsConstants.S_OK);
 }
Пример #4
0
        // Several interfaces implemented here.

        public int OnBeforeOpenSolution(string pszSolutionFilename)
        {
            SolutionLoadState = SolutionLoadState.Loading;
            return(VsConstants.S_OK);
        }