【问题标题】:Can I create a Visual Studio macro to launch a specific project in the debugger?我可以创建一个 Visual Studio 宏来在调试器中启动特定项目吗?
【发布时间】:2010-09-10 21:48:03
【问题描述】:

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

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

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

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

 Dim projItem As UIHierarchyItem

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

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

【问题讨论】:

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


    【解决方案1】:

    通过 C# 插件,以下内容对我有用:

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

    【讨论】:

    • 我是说它应该适用于任何 Visual Studio 插件。
    • 除了 EnvDtE 和 EnvDte80 之外,我可能还遗漏了一些参考资料。是吗?
    • 不,如果您的项目不是 VS Add in,那么获取 DTE 对象会稍微复杂一些。不确定您的问题是什么,但您可能应该打开一个新问题而不是评论这个答案。
    • 我看到你已经在这里找到了我的要点:gist.github.com/mayerwin/82301024371e9c555d24 它应该可以帮助你实现你所需要的。
    • 是的.. 但由于缺少命名空间和类,这不适用于 .Net 4.5。我在 SO here 上找到了 4.5 的另一个解决方案。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      相关资源
      最近更新 更多