如何获得 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;
}
}
可以启动包含多个程序集的调试会话。虽然该对话框易于设置,但如果不滚动整个项目,很难一眼看出选择了哪些项目。
是否可以只看到设置为启动的项目?
如果这是通过 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;
}
}