在Visual Studio中折叠所有项目的最佳/最快/最简单的方法是什么?

时间:2008-09-17 13:13:19

标签: visual-studio

我目前正在使用DPack,因为这会在“解决方案资源管理器”中为“解决方案”节点添加“折叠所有项目”选项。它工作得很好但可能需要一段时间才能执行,并不总是完全崩溃。

还有更好的选择吗?优选地,免费且易于安装/设置。有很多,但最好的,没有任何错误或性能问题。

5 个答案:

答案 0 :(得分:9)

我使用以下在Visual Studio 2005和Visual Studio 2008中运行的宏:

  1. 查看>其他Windows>宏资源管理器(Alt + F8)
  2. 右键单击“宏资源管理器”中的MyMacros节点
  3. 新模块......
  4. 将其命名为CollapseAll(或任何您喜欢的内容)
  5. 使用下面显示的代码替换默认代码
  6. 文件>保存折叠全部(Ctrl + S)
  7. 关闭宏编辑器
  8. 设置键盘快捷键:

    1. 工具>自定义...>命令
    2. 键盘...
    3. 显示包含以下内容的命令:Macros.MyMacros.CollapseAll.CollapseAll
    4. 指定键盘快捷键(我使用Alt + C)
    5. 代码

      Imports System
      Imports EnvDTE
      Imports EnvDTE80
      Imports System.Diagnostics
      
      Public Module CollapseAll
          Sub CollapseAll()
      
              ' Get the the Solution Explorer tree
              Dim solutionExplorer As UIHierarchy
              solutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
      
              ' Check if there is any open solution
              If (solutionExplorer.UIHierarchyItems.Count = 0) Then
                  Return
              End If
      
              ' Get the top node (the name of the solution)
              Dim rootNode As UIHierarchyItem = solutionExplorer.UIHierarchyItems.Item(1)
      
              rootNode.DTE.SuppressUI = True
      
              ' Collapse each project node
              Collapse(rootNode, solutionExplorer)
      
              ' Select the solution node, or else when you click 
              ' on the solution window
              ' scrollbar, it will synchronize the open document 
              ' with the tree and pop
              ' out the corresponding node which is probably not what you want.
      
              rootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
              rootNode.DTE.SuppressUI = False
      
          End Sub
      
          Sub CollapseSelected()
      
              ' Get the the Solution Explorer tree
              Dim solutionExplorer As UIHierarchy
              solutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
      
              ' Check if there is any open solution
              If (solutionExplorer.UIHierarchyItems.Count = 0) Then
                  Return
              End If
      
              ' Get the top node (the name of the solution)
              Dim selected As Array = solutionExplorer.SelectedItems
      
              If (selected.Length = 0) Then Return
      
              Dim rootNode As UIHierarchyItem = selected(0)
              rootNode.DTE.SuppressUI = True
      
              ' Collapse each project node
              Collapse(rootNode, solutionExplorer)
      
              ' Select the solution node, or else when you click 
              ' on the solution window
              ' scrollbar, it will synchronize the open document 
              ' with the tree and pop
              ' out the corresponding node which is probably not what you want.
      
              rootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
              rootNode.DTE.SuppressUI = False
      
          End Sub
      
          Private Sub Collapse(ByVal item As UIHierarchyItem, ByRef solutionExplorer As UIHierarchy)
      
              For Each innerItem As UIHierarchyItem In item.UIHierarchyItems
                  If innerItem.UIHierarchyItems.Count > 0 Then
      
                      ' Re-cursive call
                      Collapse(innerItem, solutionExplorer)
      
                      ' Collapse
                      If innerItem.UIHierarchyItems.Expanded Then
                          innerItem.UIHierarchyItems.Expanded = False
                          If innerItem.UIHierarchyItems.Expanded = True Then
                              ' Bug in VS 2005
                              innerItem.Select(vsUISelectionType.vsUISelectionTypeSelect)
                              solutionExplorer.DoDefaultAction()
                          End If
                      End If
      
                  End If
              Next
      
          End Sub
      
      End Module
      

      我没有编写此代码,我不确定此代码的来源,但在线有各种变体。

答案 1 :(得分:7)

Power commands for visual studio会做到这一点。没有注意到它们的任何性能\稳定性问题。

答案 2 :(得分:7)

对于VS2005,我一直在使用CoolCommands 4.0older 3.0 version的功能描述更完整。 版本3有一个.msi安装程序。版本4是.zip file(这对我的环境来说更容易)。

我最喜欢的功能(完整列表的一部分):

  • 来自解决方案资源管理器:
    • 折叠所有项目
    • 打开包含文件夹(仅限项目/文件级别)
  • 从编辑器上方的文件名选项卡中
    • 在解决方案资源管理器中找到
  • 从编辑器中的上下文菜单中
    • 演示字体

答案 3 :(得分:3)

以下是CoolCommands 4.0的更好功能列表。

要为VS 2005安装它,请执行include setup.bat。

要为VS 2008安装它,请从

修改以下行
regpkg CoolCommands.dll /codebase

为:

regpkg CoolCommands.dll /root:Software\Microsoft\VisualStudio\9.0 /codebase

答案 4 :(得分:1)

PowerCommands for Visual Studio适用于VS2008和VS2010。这是Microsoft启用的快速执行此操作的方法。