Skip to content

Instantly share code, notes, and snippets.

@jcansdale
Created February 6, 2019 14:55
Show Gist options
  • Save jcansdale/779b87644bee1afcbf5ec8177a2334aa to your computer and use it in GitHub Desktop.
Save jcansdale/779b87644bee1afcbf5ec8177a2334aa to your computer and use it in GitHub Desktop.
Enumerate projects in a solution
using System;
using System.Collections.Generic;
using EnvDTE;
public class Tests
{
[STAThread]
static IList<string> DumpProjects(DTE dte)
{
var projects = new List<string>();
foreach (Project project in dte.Solution)
{
AddProject(project);
}
void AddProject(Project project)
{
switch (project.Kind)
{
case "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}":
// EnvDTE80.ProjectKinds.vsProjectKindSolutionFolder
AddSolutionFolder(project);
break;
default:
projects.Add(project.FileName);
break;
}
}
void AddSolutionFolder(Project project)
{
foreach (ProjectItem item in project.ProjectItems)
{
if (item.Object is Project child)
{
AddProject(child);
}
}
}
return projects;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment