web-dev-qa-db-ja.com

アセンブリ全体で未使用のUsesを削除する

ReSharperがすべてのクラスを実行して、未使用の使用を削除できるかどうか疑問に思っていますか?見ましたが、R#4.5にはこのようなオプションがありません。誰かがこれをResharperで単一のクラスの使用を削除できること以外に見ましたか?

53
PositiveGuy

プロジェクト全体のクリーンアップはReSharper 5の新機能だと思います。

私はそれを取り戻します。機能はReSharper 4.5にあります。ソリューションを右クリックすると、クリーンアップコード...項目が表示され、クリーンアッププロファイルをソリューションに適用できます。プロファイルでusingディレクティブを調整するだけの場合は、ReSharperオプション内のコードクリーンアップノードから新しいクリーンアッププロファイルを作成できます。

44
bdukes

Resharper 9以降では、usingブロックをクリーンアップするときに「ソリューション内」スコープを選択するだけで済みます。

enter image description here

89
Kornél Regius

私がここで見つけた別の方法もあり、マクロを使用しています。

手順1:ツールからVisual Studioで新しいマクロを作成する|マクロメニュー。

ステップ2:以下のコードをモジュールに貼り付けて保存します

Public Module Module1
    Sub OrganizeSolution()
        Dim sol As Solution = DTE.Solution
        For i As Integer = 1 To sol.Projects.Count
            OrganizeProject(sol.Projects.Item(i))
        Next
    End Sub

    Private Sub OrganizeProject(ByVal proj As Project)
        For i As Integer = 1 To proj.ProjectItems.Count
            OrganizeProjectItem(proj.ProjectItems.Item(i))
        Next
    End Sub

    Private Sub OrganizeProjectItem(ByVal projectItem As ProjectItem)
        Dim fileIsOpen As Boolean = False
        If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
            'If this is a c# file 
            If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
                'Set flag to true if file is already open 
                fileIsOpen = projectItem.IsOpen
                Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
                window.Activate()
                projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")
                'Only close the file if it was not already open 
                If Not fileIsOpen Then
                    window.Close(vsSaveChanges.vsSaveChangesYes)
                End If
            End If
        End If
        'Be sure to apply RemoveAndSort on all of the ProjectItems. 
        If Not projectItem.ProjectItems Is Nothing Then
            For i As Integer = 1 To projectItem.ProjectItems.Count
                OrganizeProjectItem(projectItem.ProjectItems.Item(i))
            Next
        End If
        'Apply RemoveAndSort on a SubProject if it exists. 
        If Not projectItem.SubProject Is Nothing Then
            OrganizeProject(projectItem.SubProject)
        End If
    End Sub
End Module

ステップ3:必要なソリューションでマクロを実行します。楽しい :)

5
Larry