我目前正在使用DPack,因为这会在解决方案资源管理器中为"解决方案"节点添加"折叠所有项目"选项.它工作得很好,但可能需要一段时间才能执行,并不总是完全崩溃一切.
还有更好的选择吗?优选地,免费且易于安装/设置.有很多,但最好的工作,没有任何错误或性能问题.
我使用以下宏在Visual Studio 2005和Visual Studio 2008中工作:
查看>其他Windows>宏浏览器(Alt + F8)
在Macro Explorer中右键单击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
我没有编写这段代码而且我不确定这段代码来自何处,但是它在网上有各种变化.
Visual Studio的电源命令可以解决问题.没有注意到它们的任何性能\稳定性问题.
对于VS2005,我一直在使用CoolCommands 4.0.旧版3.0版本的功能描述更完整.版本3有一个.msi安装程序.版本4是一个.zip文件(无论如何我的环境都比较容易).
我最喜欢的功能(完整列表的一个子集):
来自解决方案资源管理器:
折叠所有项目
打开包含文件夹(仅限项目/文件级别)
从编辑器上方的文件名选项卡
在Solution Explorer中找到
从编辑器中的上下文菜单中
演示字体