tutorial - ¿Cuál es la mejor/más rápida/forma más fácil de colapsar todos los proyectos en Visual Studio?
visual studio code plugins (5)
Actualmente estoy usando DPack ya que esto agrega una opción "Contraer todos los proyectos" al nodo Solución en el Explorador de soluciones. Funciona bastante bien, pero puede tardar un tiempo en ejecutarse y no siempre colapsa todo completamente.
¿Hay mejores alternativas? Preferiblemente gratis y fácil de instalar / configurar. Hay muchos por ahí pero que funcionan mejor y no tienen errores o problemas de rendimiento.
Para VS2005, he estado usando CoolCommands 4.0 . La descripción de la función es más completa para la versión 3.0 anterior . La versión 3 tenía un instalador .msi. La versión 4 es un archivo .zip (que fue más fácil para mi entorno de todos modos).
Mis funciones favoritas (un subconjunto de la lista completa):
- Desde el explorador de soluciones:
- Contraer todos los proyectos
- Abrir que contiene la carpeta (Proyecto / nivel de archivo solamente)
- Desde las pestañas del nombre de archivo encima del editor
- Ubique en Solution Explorer
- Desde el menú contextual en el editor
- Fuente de demostración
Los comandos de potencia para Visual Studio harán el truco. No notó ningún problema de rendimiento / estabilidad con ellos.
Aquí hay una mejor lista de características para CoolCommands 4.0 .
Para instalarlo para VS 2005, ejecute el include setup.bat.
Para instalarlo para VS 2008, modifique la siguiente línea de
regpkg CoolCommands.dll /codebase
a:
regpkg CoolCommands.dll /root:Software/Microsoft/VisualStudio/9.0 /codebase
Uso la siguiente macro que funciona en Visual Studio 2005 y Visual Studio 2008:
- Ver> Otras ventanas> Explorador de macros (Alt + F8)
- Haga clic derecho en el nodo MyMacros en Macro Explorer
- Nuevo módulo ...
- Nómbralo CollapseAll (o lo que quieras)
- Reemplace el código predeterminado con el código que se muestra a continuación
- Archivo> Guardar CollapseAll (Ctrl + S)
- Cierre el editor de macros
Para configurar un atajo de teclado:
- Herramientas> Personalizar ...> Comandos
- Teclado...
- Mostrar comandos que contengan: Macros.MyMacros.CollapseAll.CollapseAll
- Asignar un atajo de teclado (uso Alt + C)
Código
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
No escribí este código y no estoy seguro de dónde vino este código, pero hay variaciones en línea.
PowerCommands para Visual Studio funcionará tanto para VS2008 como para VS2010. Es la forma habilitada por Microsoft para hacer esto rápidamente.