我有一个包含大约 150 个项目的解决方案。当我打开解决方案时,其中一半似乎是随机打开的。我想打开所有项目都已折叠的解决方案。在打开解决方案后,我只想展开我选择的那个。
我怎样才能做到这一点?
我有一个包含大约 150 个项目的解决方案。当我打开解决方案时,其中一半似乎是随机打开的。我想打开所有项目都已折叠的解决方案。在打开解决方案后,我只想展开我选择的那个。
我怎样才能做到这一点?
我相信 IDE 会从上次打开解决方案时保持展开/折叠状态。手动过程是自己关闭它们。
或者从这里。这将折叠所有项目并展开所选项目。
宏 这是一个用于折叠解决方案中的所有项目并展开所选项目的宏:
1.在 VS2005 IDE 上选择 ALT+F8 打开宏浏览
器 2.右键单击 MyMacros。
3.选择新模块。
4.键入新模块名称为 CollapseAll
5.选择 OK – 创建一个新模块 CollapseAll。
6.右键单击 CollapseAll 模块 7.
选择编辑 - 启动宏 IDE。
8.复制下面的Sub,粘贴到模块和End模块之间。-- 在宏 IDE 中(您可能需要调整一些行才能成功编译宏):
Sub CollapseAll()
'NavigateSolution()
' Get the the Solution Explorer tree
Dim UIHSolutionExplorer As UIHierarchy
UIHSolutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
' Check if there is any open solution
If (UIHSolutionExplorer.UIHierarchyItems.Count = 0)
Then
Return
End If
' Get the top node (the name of the solution)
Dim UIHSolutionRootNode As UIHierarchyItem
Dim UIHChildItem As UIHierarchyItem
UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)
' Collapse each project node
Dim UIHItem As UIHierarchyItem
For Each UIHItem In UIHSolutionRootNode.UIHierarchyItems
For Each UIHChildItem In UIHItem.UIHierarchyItems
UIHChildItem.UIHierarchyItems.Expanded = False
Next
UIHItem.UIHierarchyItems.Expanded = False
Next
UIHSolutionRootNode.UIHierarchyItems.Expanded = True
Dim UIHSelectedItem As UIHierarchyItem = UIHSolutionExplorer.SelectedItems(0)
UIHSelectedItem.UIHierarchyItems.Expanded = True
End Sub
保存模块。现在将此宏添加到工具栏以便于访问。
9.从主菜单中选择工具 -> 自定义 10.
在自定义对话框中选择命令选项卡
11.选择宏
12.选择 CollapseAll 宏并将其拖放到 VS2005 IDE 工具栏之一上。您将在工具栏上看到宏名称 –<br> 13.不要关闭自定义弹出窗口 --
14.右键单击工具栏上的宏名称
15.选择默认样式 –这将删除工具栏上的宏名称,在工具栏上产生一个小矩形
16.右键单击小矩形17.
选择 ChangeButtonImage 18.选择
其中一个图像,例如 HourGlass。您将在工具栏上看到图像。
19.关闭自定义弹出窗口 20.
测试宏:
1.选择解决方案中的一个项目
2.选择工具栏上的 CollapseAll 按钮
3.观察解决方案资源管理器将全部折叠并展开您选择的项目。
我知道这不适用于 VS2003,但如果您正在 VS2010 中寻找相同的解决方案,Sara Ford 博客介绍了一个为您执行此操作的插件:
我在一个有 100 多个项目的产品上工作。我为每个子模块(一些相关的 vcproj / csproj)制作 sln 文件,这样我就不必打开一个很大的 sln 文件来查看项目。
可能有一种方法可以编写 Visual Studio 脚本以仅在折叠时打开,但我不知道如何。我通过将 vcproj / csproj 拆分为不同的 sln 并使用构建服务器来构建来避免这个问题。