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

时间:2008-09-18 19:54:10

标签: visual-studio visual-studio-2008 macros

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

我正在努力省去在解决方案资源管理器中开始单个项目的麻烦,而只是在工具栏上粘贴一个按钮来调用宏来启动单个项目的调试器(同时保留“F5”类型单独调试以启动两个进程)。

我尝试过录制,但这并没有真正带来任何有用的东西。

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

 Dim projItem As UIHierarchyItem

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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