web-dev-qa-db-fra.com

Supprime les espaces de noms inutilisés dans l'ensemble d'un projet ou d'une solution à la fois

Je sais que vous pouvez le faire fichier par fichier.

Est-il possible de le faire en une seule étape pour tous les fichiers d'un projet?

50
leora

Voulez-vous dire en utilisant des déclarations? Tout d’abord, notez qu’ils ne font généralement pas de mal aux utilisateurs qui prennent de la place ..__ Des outils tels que ReSharper proposent des astuces automatisées pour le faire, cependant: il y avait un lien dans le flux VS il y a quelque temps; cela revient à:

  • allez dans Outils -> Macros -> Macros IDE ...
  • dans l'Explorateur de projet, Ajouter -> Ajouter un module ... (mettre un nom - j'ai utilisé OrganiseUsings)
  • coller dessus avec le code ci-dessous
  • Fichier -> Enregistrer MyMacros, quitter

Maintenant, si vous cliquez avec le bouton droit de la souris sur la barre d’outils et sur Personnaliser ... - vous devriez pouvoir trouver MyMacros.OrganiseUsings.RemoveAndSortAll - faites-le glisser quelque part (le menu Outils peut-être aussi; vous pouvez également changer le nom après l'avoir placé).

Vous pouvez maintenant utiliser cette option pour exécuter la commande Supprimer et trier pour une solution complète. Un grand gain de temps.

==== code ====

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module OrganiseUsings

    Public Sub RemoveAndSortAll()
        On Error Resume Next
        Dim sol As Solution = DTE.Solution

        For i As Integer = 1 To sol.Projects.Count    
            Dim proj As Project = sol.Projects.Item(i)    
            For j As Integer = 1 To proj.ProjectItems.Count    
                RemoveAndSortSome(proj.ProjectItems.Item(j))    
            Next    
        Next    
    End Sub    

    Private Sub RemoveAndSortSome(ByVal projectItem As ProjectItem)
        On Error Resume Next
        If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then    
            If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
                Dim window As Window = projectItem.Open(Constants.vsViewKindCode)

                window.Activate()

                projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")

                window.Close(vsSaveChanges.vsSaveChangesYes)
            End If    
        End If    

        For i As Integer = 1 To projectItem.ProjectItems.Count    
            RemoveAndSortSome(projectItem.ProjectItems.Item(i))    
        Next
    End Sub   

End Module
15
Marc Gravell

Les autres réponses faisant référence aux extensions Productivity Power Tools n'entrent pas dans les détails pour savoir comment procéder. Voici quelques instructions pour Visual Studio 2013, 2015 et 2017:

Commencez par ouvrir la boîte de dialogue Outils> Extensions et mises à jour ... dans Visual Studio, sélectionnez Online dans la barre de gauche, puis recherchez "Productivity Power Tools" dans la galerie Visual Studio. . Installez l'extension et redémarrez VS.

Vous pouvez également télécharger et installer manuellement les extensions pour votre version de Visual Studio:

Outils de productivité 2013
Productivity Power Tools 2015
Productivity Power Tools 2017

Pour VS2017, vous pouvez également télécharger l'extension Power Commands séparément des autres éléments du pack Power Tools: 

Commandes d'alimentation pour Visual Studio (VS2017)

Sachez qu'au moment de la rédaction, la version VS2017 ne fonctionnait pas avec les projets/solutions .Net Core.

Une fois l'extension installée, cliquez avec le bouton droit de la souris sur la solution dans l'Explorateur de solutions, puis sélectionnez Commandes de gestion> Supprimer et trier les utilisations

Cela peut prendre un certain temps, en particulier pour les grandes solutions; il ne conserve pas non plus les fichiers modifiés ouverts (donc pas d'annulation), donc assurez-vous de tout mettre dans le VCS de votre choix avant l'exécuter, de sorte que vous puissiez annuler les modifications apportées quelque chose ne va pas!

Mise à jour: Formater tous les fichiers

Récemment, j’utilise l’extension Format Tous les fichiers , qui vous permet d’exécuter Format Document, Supprimer et trier les utilisations et une autre commande personnalisée de votre choix (le cas échéant, défini dans les préférences du VS).

Cela semble fonctionner très bien, mais encore une fois, pas d'annulation, donc assurez-vous de tout mettre dans votre VCS de choix avant l'exécuter.

65
Mark Bell

Il n'y a aucun besoin de plugins dans VS 2017. Cliquez sur l'icône en forme d'ampoule à côté d'une instruction using, puis cliquez sur Solution à côté de Fix all occurrences in part.

16
sotn

Pour Visual Studio 2010, vous pouvez télécharger l'extension "Supprimer et trier à l'aide de" de la galerie Visual Studio.

http://visualstudiogallery.msdn.Microsoft.com/en-us/cb559aa8-d976-4cc2-9754-5a712f985d16

Fonctionne bien pour moi

8
vmachacek

Si vous voulez dire «utiliser», les commandes de puissance contiennent cette fonctionnalité + un bateau charge plus.

http://code.msdn.Microsoft.com/PowerCommands

4
Mesh

pour une version plus récente, y compris 2017, essayez l'extension "Format Tous les fichiers" cela a très bien fonctionné pour moi.

 enter image description here

3
dave thieben

Voici une petite amélioration sur le script ci-dessus pour VB.NET. Assurez-vous d’avoir installé le Productivity Power Tools .

    Private Sub RemoveAndSortSome(ByVal projectItem As ProjectItem)
    On Error Resume Next
    If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
        If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)

            window.Activate()

            projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")

            window.Close(vsSaveChanges.vsSaveChangesYes)

        ElseIf projectItem.Name.LastIndexOf(".vb") = projectItem.Name.Length - 3 Then
            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)

            window.Activate()

            projectItem.Document.DTE.ExecuteCommand("EditorContextMenus.CodeWindow.OrganizeImports.RemoveandSortImports")

            window.Close(vsSaveChanges.vsSaveChangesYes)
        End If
    End I
2
mghaoui

J'utilise Visual Studio 2015 et j'ai trouvé un outil appelé BatchFormat: https://marketplace.visualstudio.com/items?itemName=vs-publisher-147549.BatchFormat

Cela a parfaitement fait le travail.

Installez l'outil, puis cliquez avec le bouton droit sur votre solution dans l'explorateur de solutions, puis en haut du menu, vous voyez le format de lot:

 enter image description here

Quoi que vous sélectionniez soit appliqué à chaque fichier de votre solution, comme vous pouvez le voir sur la capture d'écran, il existe d'autres options, vous pouvez également formater chaque document.

0
Tim Pickin