web-dev-qa-db-ja.com

プロジェクト全体またはソリューション全体で未使用の名前空間を一度に削除します

私はあなたがファイルごとにそれを行うことができることを知っています。

プロジェクト内のすべてのファイルに対してこれを1つのステップで行う方法はありますか?

54
leora

ステートメントを使用することを意味しますか?最初に、それらは一般的にスペースを取る他に害を及ぼさないことに注意してください。 ReSharper のようなツールは、これを行うための自動化されたトリックを提供しますが、少し前に VSフィードにリンク がありました。要約すると:

  • [ツール]-> [マクロ]-> [マクロIDE]に移動します...
  • プロジェクトエクスプローラーで、[追加]-> [モジュールの追加...](名前を付けます-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
17
Marc Gravell

Productivity Power Tools拡張機能を参照する他の回答では、これを実際に行う方法については詳しく説明していません。そのため、Visual Studio 2013、2015、2017の手順をいくつか示します。

まず、Visual StudioでTools> Extensions and Updates ...ダイアログを開き、左側のOnlineを選択します-ハンドバーを使用して、Visual Studioギャラリーで"Productivity Power Tools"を検索します。拡張機能をインストールし、VSを再起動します。

または、Visual Studioのバージョンに対応する拡張機能を手動でダウンロードしてインストールすることもできます。

生産性パワーツール201
生産性パワーツール2015
生産性パワーツール2017

VS2017の場合は、Power Tools拡張機能をPower Toolsパックの他の拡張機能とは別にダウンロードすることもできます。

Visual Studioのパワーコマンド(VS2017)

執筆時点では、VS2017バージョンは.Net Coreプロジェクト/ソリューションでは動作しないことに注意してください。

拡張機能をインストールしたら、ソリューションエクスプローラーでソリューションを右クリックし、Power Commands> Remove and Sort Usingsを選択します。

これには、特に大規模なソリューションでは時間がかかる場合があります。また、変更されたファイルを開いたままにしない(元に戻すことができない)ため、実行する前に、選択したVCSですべてをコミットすることを確認してください、問題が発生した場合に行った変更を元に戻すことができます。

更新:すべてのファイルをフォーマット

最近私は Format All Files 拡張子を使用しています。これにより、Format Documentを実行できますUsesと、選択した他の1つのカスタムコマンド(すべてオプションで、VS設定で設定)を削除して並べ替えます。

それは非常にうまく機能しているようですが、元に戻すことはできないため、選択したVCSですべてをコミットすることを確認してくださいそれを実行する前に

71
Mark Bell

VS 2017ではプラグインは必要ありません。usingステートメントの近くにある電球アイコンをクリックし、Fix all occurrences inパーツの横にあるSolutionをクリックします。

35
sotn

Visual Studio 2010の場合、Visual Studioギャラリーから「削除と並べ替え」拡張機能をダウンロードできます。

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

私にとってはうまくいく

8
vmachacek

パワーコマンドの「使用」を意味する場合は、この機能とボートの負荷がさらに含まれています。

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

4
Mesh

2017を含む最新バージョンについては、 "Format All Files" 拡張子を試してください。それは私にとって本当によく働いています。

enter image description here

3
dave thieben

上記のVB.NET用のスクリプトの小さな改善点を以下に示します。 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

Visual Studio 2015を使用していて、BatchFormatという名前のツールを見つけました: https://marketplace.visualstudio.com/items?itemName=vs-publisher-147549.BatchFormat

これは完全に仕事をしました。

ツールをインストールし、ソリューションエクスプローラーでソリューションを右クリックして、メニューの上部にバッチ形式を表示します。

enter image description here

選択したものがソリューション内のすべてのファイルに適用されます。スクリーンショットに示すように、他のオプションがあり、すべてのドキュメントをフォーマットすることもできます。

0
Tim Pickin