从代码中获取解决方案中的项目列表

get list of projects within solution from code

我实现了 Microsoft.VisualStudio.TemplateWizardIWizard 接口来自动生成一个 VS 项目文件。在我的解决方案中有四个不同的项目。

现在 ProjectFinishedGenerating 我想获得我的解决方案中所有项目的列表:

public void ProjectFinishedGenerating(Project project)
{
    var vsProject = (VSProject)project.Object;
    var references = ((Array)project.DTE.ActiveSolutionProjects).OfType<Project>();
}

但是,只返回提供给该方法的项目所指示的项目,而不是解决方案中的所有项目。当然项目都是活跃的

显然 DTE.ActiveSolutionProjects returns 已选择 项目的列表。相反,我们想要的是所有 active 的列表:

var references = project.DTE.Solution.Projects.Cast<Project>();