Visual Studio Macro для форматирования всех файлов в решении - PullRequest
3 голосов
/ 15 октября 2010

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

Мне было интересно, как создать макрос, чтобы открыть каждый файл в решении с расширением .cs и просто выделить весь текст, а затем вырезать и вставить его (что соответствующим образом отформатирует). Было бы также здорово, если бы он мог также сортировать и удалять операторы использования, но это не так важно, так как я представляю, что это будет немного сложнее.

Буду признателен за вашу помощь. Спасибо

Ответы [ 2 ]

8 голосов
/ 15 октября 2010

Проблема решена! Следующий макрос сделал трюк, если кто-то заинтересован:

   Public Module FormatAll
        Public Sub FormatAll()
            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
                    FormatSome(proj.ProjectItems.Item(j))
                Next
            Next
        End Sub

        Private Sub FormatSome(ByVal projectItem As ProjectItem)
            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.FormatDocument")
                    projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")
                    window.Close(vsSaveChanges.vsSaveChangesYes)
                End If
            End If

            For i As Integer = 1 To projectItem.ProjectItems.Count
                FormatSome(projectItem.ProjectItems.Item(i))
            Next
        End Sub
    End Module
1 голос
/ 08 февраля 2013

Для Visual Studio 2008 необходимо изменить операторы формата, поскольку FormatDocument недоступен:

projectItem.Document.DTE.ExecuteCommand("Edit.SelectAll")
projectItem.Document.DTE.ExecuteCommand("Edit.FormatSelection")

Таким образом, сценарий должен быть:

Public Sub FormatAll()
    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
            FormatSome(proj.ProjectItems.Item(j))
        Next
    Next
End Sub

Private Sub FormatSome(ByVal projectItem As ProjectItem)
    If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
        If projectItem.Name.LastIndexOf(".cpp") = projectItem.Name.Length - 4 Then
            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            window.Activate()
            projectItem.Document.DTE.ExecuteCommand("Edit.SelectAll")
            projectItem.Document.DTE.ExecuteCommand("Edit.FormatSelection")
            window.Close(vsSaveChanges.vsSaveChangesYes)
        ElseIf projectItem.Name.LastIndexOf(".h") = projectItem.Name.Length - 2 Then
            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            window.Activate()
            projectItem.Document.DTE.ExecuteCommand("Edit.SelectAll")
            projectItem.Document.DTE.ExecuteCommand("Edit.FormatSelection")
            window.Close(vsSaveChanges.vsSaveChangesYes)
        End If
    End If

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