5

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

我试图为自己省去在解决方案资源管理器中四处寻找以启动单个项目的麻烦,而宁愿在工具栏上粘贴一个按钮,该按钮调用一个启动单个项目的调试器的宏(同时将“F5”类型调试单独保留到启动两个进程)。

我尝试录制,但这并没有真正产生任何有用的结果。

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

 Dim projItem As UIHierarchyItem

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

(这大致基于宏记录器如何尝试执行此操作。我不确定导航 UI 对象模型是否是正确的方法,或者我是否应该考虑通过解决方案/项目对象模型)。

4

2 回答 2

6

行。如果加载了解决方案,这似乎适用于大多数 UI(全部?)上下文:

 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
于 2008-09-18T20:21:16.370 回答
0

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

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
于 2015-08-29T05:03:54.090 回答