Удаляйте неиспользуемые пространства имен сразу во всем проекте или решении.

Я знаю, что вы можете сделать это файл за файлом.

Есть ли способ сделать это за один шаг для всех файлов в проекте?


person leora    schedule 12.11.2008    source источник
comment
Поскольку прошло несколько лет, не могли бы вы обновить принятый ответ, пожалуйста?   -  person Thomas Ayoub    schedule 12.07.2021


Ответы (11)


Вы имеете в виду использование утверждений? Во-первых, обратите внимание, что они, как правило, не причиняют вреда тем, кто занимает место. Однако такие инструменты, как ReSharper, предлагают автоматические приемы: существовал ссылка в ленте VS некоторое время тому назад; это сводится к:

  • перейдите в Инструменты -> Макросы -> Макросы IDE...
  • в Project Explorer, Добавить -> Добавить модуль... (введите имя - я использовал OrganiseUsings)
  • вставьте код ниже
  • Файл -> Сохранить MyMacros, выйти

Теперь, если вы щелкните правой кнопкой мыши на панели инструментов и выберите «Настроить...» — вы сможете найти MyMacros.OrganiseUsings.RemoveAndSortAll — перетащите это куда-нибудь под рукой (возможно, в меню «Инструменты»; вы также можете изменить имя после его размещения).

Теперь вы можете использовать этот параметр для запуска команды «Удалить и отсортировать» для всего решения. Большая экономия времени.

==== код ====

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
person Marc Gravell    schedule 12.11.2008
comment
К сожалению, не повезло с Visual Studio 2012, так как макросы не поддерживаются :( - person GONeale; 05.10.2012

В других ответах, относящихся к расширениям Productivity Power Tools, не содержится никаких подробностей о том, как это сделать на самом деле, поэтому вот несколько инструкций для Visual Studio 2013, 2015, 2017 и 2019:

Сначала откройте диалоговое окно Инструменты › Расширения и обновления... в Visual Studio, выберите Онлайн на панели слева, а затем выполните поиск в галерее Visual Studio. Электроинструменты для повышения производительности. Установите расширение и перезапустите VS.

Кроме того, вы можете вручную загрузить и установить расширения для своей версии Visual Studio:

Power Tools 2013
Power Tools 2015
Power Tools 2017/2019

Для VS2017 и VS2019 вы также можете загрузить расширение Power Commands отдельно от других в пакете Power Tools:

Команды Power для Visual Studio

Имейте в виду, что на момент написания статьи версия VS2017 не работала с проектами/решениями .Net Core.

Установив расширение, просто щелкните правой кнопкой мыши решение в обозревателе решений и выберите Power Commands › Удалить и отсортировать использование.

Это может занять некоторое время, особенно для больших решений; он также не оставляет измененные файлы открытыми (следовательно, не может отменить), поэтому убедитесь, что вы зафиксировали все в выбранной системе контроля версий перед его запуском, чтобы вы могли отменить изменения, которые он вносит, если что-то пойдет не так!

Обновление: форматировать все файлы

Недавно я использовал расширение Форматировать все файлы, которое позволяет выполните Форматировать документ, Удалить и отсортировать использование и одну другую пользовательскую команду по вашему выбору (все необязательно, задайте в настройках VS).

Кажется, что это работает очень хорошо, но опять же, без отмены, поэтому убедитесь, что вы зафиксировали все в выбранной системе контроля версий перед ее запуском.

person Mark Bell    schedule 25.02.2016
comment
Плюс один для добавления ссылок на текущую версию и предыдущую версию. Гной один за предоставление шагов, хоть они и простые. - person Rhyous; 15.06.2016
comment
плюс один за то, что напомнил мне о коммите в первую очередь. Возможно, вы только что спасли мой бекон! - person Devin Prejean; 25.05.2017

В VS 2017 или 2019 нет необходимости в каких-либо плагинах. Щелкните значок лампочки рядом с любым оператором использования и щелкните Solution рядом с частью Fix all occurrences in.

Скриншот решения

person sotn    schedule 31.05.2018
comment
Это сработало для меня, поскольку я хотел удалить конкретный оператор использования во всем решении. - person Daniel Williams; 06.12.2018
comment
Это лучшее решение, чем принятый ответ как родной для IDE. Подтверждена работа в VS 2019 - person Mr.B; 01.02.2019
comment
ОМГ, я так слеп. Пользуюсь лампочкой целую вечность и только сейчас заметил, что действия можно применять ко всему проекту/решению. - person LeonidasFett; 09.05.2019
comment
Более поздние версии не имеют лампочки, как раньше, но щелкнув правой кнопкой мыши оператор using, а затем (лампочка) Быстрые действия и рефакторинг..., вы получите возможность удалить использование во всем решении. - person Nikola Novak; 23.07.2019
comment
@NikolaNovak ты уверен? Я просто использовал лампочку, как всегда, на последней (и чистой) VS2019.. может быть, расширение изменило это в вашей установке? - person Oscar O.; 07.10.2019
comment
В моем случае IDE пишет: здесь нет быстрых действий - person bside; 05.12.2019

Для Visual Studio 2010 вы можете загрузить расширение «Удалить и отсортировать с помощью» из галереи Visual Studio.

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

Хорошо работает для меня

person vmachacek    schedule 21.04.2011
comment
Он также работает на VS2013. Тем не менее, по крайней мере, в VS2013 он активируется при сохранении документа, то это НЕ способ сделать это за один шаг для всех файлов в проекте. - person dsnunez; 26.10.2015
comment
Убедитесь, что ваше дерево исходного кода развернуто, когда вы запускаете это. Чтобы запустить это, щелкните правой кнопкой мыши конкретный проект/решение и выберите параметр «Удалить и отсортировать неиспользуемые расширения» в обозревателе решений. После этого каждый файл открывается только на короткое время, прежде чем он будет очищен, а затем автоматически закрыт. - person Ganesh Kamath - 'Code Frenzy'; 09.02.2017
comment
Я полагаю, что ссылка теперь marketplace.visualstudio.com/ - person Hoppe; 29.03.2019

Если вы имеете в виду «использование», Power Commands содержит эту функциональность + еще больше.

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

person Mesh    schedule 12.11.2008

Производительность Электроинструменты — это то, что вам нужно. https://visualstudiogallery.msdn.microsoft.com/dbcb8670-889e-4a54-a226-a48a15e4cace

После того, как вы это установили, вы можете найти «Удалить и отсортировать использование при сохранении» в «Инструменты —> Параметры —> Инструменты повышения производительности —> PowerCommands —> Общие». После того, как вы отметите эту опцию, перезапустите VS. Теперь сохраните, и вы увидите волшебство.

Для VS 2015 взгляните на это.

person VivekDev    schedule 16.08.2015

для более поздней версии, включая версию 2017, попробуйте "Форматировать все файлы". расширение. это работает очень хорошо для меня.

введите здесь описание изображения

person Dave Thieben    schedule 27.04.2017

Вот небольшое улучшение сценария выше для VB.NET. Убедитесь, что у вас установлены 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
person mghaoui    schedule 10.05.2012
comment
Спасибо за ссылку на электроинструменты ... Я не знал, что они существовали в 2010 году, и мне их не хватало после обновления с 2008 года. - person corlettk; 16.06.2012

В меню анализа есть встроенная функция, которая называется «Очистка кода». Если вы нажмете «Профиль 1», он будет выполнять функции удаления и сортировки.

введите здесь описание изображения

person Murat Can OĞUZHAN    schedule 10.01.2021

Я использую Visual Studio 2015 и нашел инструмент BatchFormat: https://marketplace.visualstudio.com/items?itemName=vs-publisher-147549.BatchFormat

Это сделало работу отлично.

Установите инструмент, затем щелкните правой кнопкой мыши свое решение в обозревателе решений, затем в верхней части меню вы увидите пакетный формат:

введите здесь описание изображения

Все, что вы выбираете, применяется к каждому файлу в вашем решении, как вы можете видеть на снимке экрана, есть и другие варианты, вы также можете отформатировать каждый документ.

person Tim Pickin    schedule 09.02.2017

Visual Studio 2017 имеет встроенную функцию для удаления ненужного пространства имен из всего проекта.

введите здесь описание изображения

person Sangeet Shah    schedule 15.04.2019