2008-09-17 17 views
9

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.¿Cuál es la mejor/más rápida/la forma más fácil de contraer todos los proyectos en Visual Studio?

¿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.

Respuesta

7

Para VS2005, he estado usando CoolCommands 4.0. La descripción de la función es más completa para el older 3.0 version. La versión 3 tenía un instalador .msi. La versión 4 es .zip file (que fue más fácil para mi entorno de todos modos).

mis características favoritas (un subconjunto de la lista completa):

  • Desde el explorador de soluciones:
    • Cerrar todos los proyectos
    • abierto que contiene (a nivel de proyecto/archivo solamente) carpeta
  • Desde las pestañas del nombre del archivo encima del editor
    • Localizar en el Explorador de soluciones
  • En el menú contextual en el editor
    • Demo Fuentes
+0

CoolCommands es de código abierto para que pueda agregar más características :-). – AlePani

+0

¿Dónde está alojada la versión de código abierto? – tjrobinson

+0

CoolCommands no contrae todos los proyectos si tiene proyectos debajo de Carpetas de solución. – tjrobinson

3

Aquí está una mejor lista de características de CoolCommands 4.0.

Para instalarlo para VS 2005, ejecute 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 
9

utilizo la siguiente macro que funciona en Visual Studio 2005 y Visual Studio 2008:

  1. Ver> Otras ventanas> Explorador de macros (Alt + F8)
  2. Haga clic con el botón derecho en el nodo MyMacros en Macro Explorer
  3. Nuevo módulo ...
  4. Nombre que CollapseAll (o lo que quieras)
  5. reemplazar el código predeterminado por el código se muestra a continuación
  6. Archivo> Guardar CollapseAll (Ctrl + S)
  7. cerrar el editor de macros

Para configurar un atajo de teclado:

  1. Herramientas> Personalizar ...> Comandos
  2. Keyboar d ...
  3. Mostrar los comandos que contienen: Macros.MyMacros.CollapseAll.CollapseAll
  4. asignar un método abreviado (utilizo 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 lo hice escriba este código y no estoy seguro de dónde vino este código, pero hay variaciones en línea.

+0

Gran hallazgo. Me encanta no agregar muchas funcionalidades que no necesito/quiero. Esto fue perfecto y aún funciona con VS2010. –

+0

+1 Paso a paso, y funcionó por primera vez en VS2010. – Rick

Cuestiones relacionadas