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

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

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

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

 Dim projItem As UIHierarchyItem

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

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

有帮助吗?

解决方案

好的。如果加载了解决方案,这似乎适用于大多数 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

其他提示

从 C# 插件中,以下内容对我有用:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top