/// <summary>
        /// Lists all of the projects included in the solution, recursing as necessary to extract the
        /// projects from the solution folders.
        /// Internal for testing.
        /// </summary>
        private IList <Project> GetSolutionProjects()
        {
            List <Project> result = new List <Project>();

            var rootProjects = _solution.Projects;

            foreach (Project item in rootProjects)
            {
                // If it's a folder, search projects under it.
                if (item.Kind == EnvDTE.Constants.vsProjectKindSolutionItems)
                {
                    result.AddRange(GetSolutionFolderProjects(item));
                }
                // Skipping unsupported projects.
                else if (ProjectHelper.IsValidSupported(item))
                {
                    result.Add(item);
                }
            }

            return(result);
        }