我可以创建Visual Studio宏以在调试器中启动特定项目吗?

我可以创建Visual Studio宏以在调试器中启动特定项目吗?

Can I create a Visual Studio macro to launch a specific project in the debugger?

我的项目在同一解决方案文件中同时具有客户端和服务器组件。我通常将调试器设置为在调试时一起启动它们,但通常是在调试器之外启动服务器,以便在仅处理客户端内容时可以根据需要启动和停止客户端。 (这要快得多)。

我试图避免自己在解决方案资源管理器中闲逛以启动单个项目的麻烦,而宁愿只是在工具栏上贴一个按钮,该按钮调用一个宏来启动单个项目的调试器(同时保留" F5"类型单独调试以启动两个进程)。

我尝试录制,但这并没有真正有用。

到目前为止,我所要做的就是在解决方案资源管理器中找到项目项:

1
2
3
 Dim projItem As UIHierarchyItem

 projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\\ProjectFolder\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)

(这宽松地基于宏记录器的尝试方式。我不确定导航UI对象模型是否是正确的方法,或者我是否应该考虑通过Solution / Project对象模型进行导航)。


好的。只要加载了解决方案,这似乎就可以在大多数UI(所有?)上下文中起作用:

1
2
3
4
5
6
 Sub DebugTheServer()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("Solution\\ServerFolder\\ServerProject").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.Windows.Item(Constants.vsWindowKindOutput).Activate()
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")
 End Sub

在C#加载项中,以下内容对我有用:

1
2
Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\\\SolutionFolderName\\\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);

推荐阅读