在Visual Studio中折叠所有项目的最佳/最快/最简单的方法是什么?
时间:2020-03-05 18:58:49 来源:igfitidea点击:
我目前正在使用DPack,因为这会在"解决方案资源管理器"中的"解决方案"节点上添加"折叠所有项目"选项。它工作得很好,但是可能要花一些时间才能执行,而且并不总是将所有内容完全折叠起来。
有更好的选择吗?最好是免费的,易于安装/设置。那里有很多东西,但是效果最好,没有任何错误或者性能问题。
解决方案
回答
Visual Studio的电源命令可以解决问题。没有注意到它们的任何性能\稳定性问题。
回答
对于VS2005,我一直在使用CoolCommands 4.0。对于较旧的3.0版本,功能描述更加完整。
版本3具有.msi安装程序。版本4是.zip文件(无论如何,这对我的环境来说更容易)。
我最喜欢的功能(完整列表的一部分):
- 打开包含文件夹(仅项目/文件级别)
回答
这是CoolCommands 4.0更好的功能列表。
要为VS 2005安装它,请执行include setup.bat。
要为VS 2008安装它,请从
regpkg CoolCommands.dll /codebase
到:
regpkg CoolCommands.dll /root:Software\Microsoft\VisualStudio.0 /codebase
回答
我使用以下在Visual Studio 2005和Visual Studio 2008中可用的宏:
- 查看>其他Windows>宏浏览器(Alt + F8)
- 用鼠标右键单击宏资源管理器中的MyMacros节点
- 新模块...
- 将其命名为CollapseAll(或者我们喜欢的任何名称)
- 将默认代码替换为下面显示的代码
- 文件>保存全部折叠(Ctrl + S)
- 关闭宏编辑器
设置键盘快捷键:
- 工具>自定义...>命令
- 键盘...
- 显示包含以下内容的命令:Macros.MyMacros.CollapseAll.CollapseAll
- 分配键盘快捷键(我使用Alt + C)
代码
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
我没有编写此代码,也不确定该代码来自何处,但是在线上有很多变化。