如何获得 Visual Studio 中的启动项目列表?

How do I get a list of Startup Projects in Visual Studio?

可以启动包含多个程序集的调试会话。虽然该对话框易于设置,但如果不滚动整个项目,很难一眼看出选择了哪些项目。

是否可以只看到设置为启动的项目?

如果这是通过 Visual Studio 本身或检查某种文件或其他,请不要介意。

您可以使用以下命令显示启动项目列表 Visual Commander(语言:C#):

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        System.Windows.MessageBox.Show(string.Join(System.Environment.NewLine, GetStartupProjects(DTE).ToArray()));
    }

    System.Collections.Generic.List<string> GetStartupProjects(EnvDTE80.DTE2 dte)
    {
        if (dte != null && dte.Solution != null && dte.Solution.SolutionBuild != null)
        {
            System.Collections.Generic.List<string> result = new System.Collections.Generic.List<string>();
            System.Array projects = dte.Solution.SolutionBuild.StartupProjects as System.Array;
            if (projects != null)
            {
                foreach (string s in projects)
                    result.Add(s);
            }
            return result;
        }
        return null;
    }
}

如果您只想要项目名称本身而不需要(可能)冗长的路径名称:

using System.Linq;

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        System.Windows.MessageBox.Show(string.Join(System.Environment.NewLine, GetStartupProjects(DTE).ToArray()));
    }

    System.Collections.Generic.List<string> GetStartupProjects(EnvDTE80.DTE2 dte)
    {
        if (dte == null || dte.Solution == null || dte.Solution.SolutionBuild == null) return null;

        var result = new System.Collections.Generic.List<string>();
        var projects = dte.Solution.SolutionBuild.StartupProjects as System.Array;

        if (projects == null) return result;

        result.AddRange(from string s in projects select s.Split('\') into parts select parts[parts.Length - 1]);

        return result;
    }
}