忍者ブログ
  C#   マクロ   Notepad++
04
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ひとつひとつのソースファイルに対して
usingの整理するのが大変めんどくさくて
例によって探してみたら
やはり世の中にはいらっしゃるみたいでいらっしゃっていました。



<code:keep>
http://www.codekeep.net/snippets/dc61880f-161f-479b-b4eb-6c971552e667.aspx

自分なりに解釈したコメントをつけたのが以下。

- マクロ
' ソリューション内全部のCSファイルをusing整理。
Sub OrganizeSolution()
    Dim solution As Solution = DTE.Solution
    For i As Integer = 1 To solution.Projects.Count
        OrganizeProject(solution.Projects.Item(i))
    Next
End Sub

' プロジェクト内全部のCSファイルをusing整理。
Private Sub OrganizeProject(ByVal project As Project)
    For i As Integer = 1 To project.ProjectItems.Count
        OrganizeProjectItem(project.ProjectItems.Item(i))
    Next
End Sub

' usingディレクティブ整理実施。
Private Sub OrganizeProjectItem(ByVal projectItem As ProjectItem)
    ' --- 自身のusing整理 ---
    ' 物理的に存在するファイルか。
    If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
        ' C#のソースファイルが対象。
        If System.IO.Path.GetExtension(projectItem.Name) = ".cs" Then
            Dim isFileOpen As Boolean = projectItem.IsOpen

            ' ファイルを開いてアクティブに。
            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            window.Activate()

            ' Usingの整理>削除および並び替え を実施。
            projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")

            ' 最初から開いていなかったファイルは閉じておく。
            ' 最初から開いていたファイルはそのままキープ。
            If Not isFileOpen Then
                ' 保存して閉じる
                window.Close(vsSaveChanges.vsSaveChangesYes)
            End If
        End If
    End If

    ' --- 自身のプロジェクトにぶら下がってるファイルを対象として整理 ---
    If Not projectItem.ProjectItems Is Nothing Then
        For i As Integer = 1 To projectItem.ProjectItems.Count
            OrganizeProjectItem(projectItem.ProjectItems.Item(i))
        Next
    End If

    ' --- 自身のプロジェクトにぶら下がってるプロジェクトを対象として整理 ---
    If Not projectItem.SubProject Is Nothing Then
        ' 再帰
        OrganizeProject(projectItem.SubProject)
    End If
End Sub

えらい勢いでソリューションにぶら下がるすべてのcsファイルを一度開いて
usingステートメントの並び替えと削除を実施してくださいます。
たくさんcsファイルがあると時間がかかるので
一度コンパイルしておき、かつ1つ以上は開いた状態にしておくと
速かったです。

とにかく整理しておかないと気が済まないけど
ひとつひとつ確認するのは面倒くさい時とかに
そうとう役立ちます
PR
この記事にコメントする
名前
URL
本文
パス   
PREV  HOME  NEXT
忍者ブログ  [PR]

(design by 山瀬)