Автоматически форматировать все файлы в решении в visual studio 2010

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

Когда я выполняю итерацию любого ProjectItem в моих проектах, я не знаю, как открывать назначаемые файлы в режиме исходного кода или как различать исходные файлы и файлы-источники (например, png-s или такие).

Есть ли у вас какие-либо предложения?

спасибо.

Ответы

Ответ 1

Ну, вместо написания макроса посмотрите Code Maid (бесплатно на visualstudiogallery), есть две функции:

  • Очистка одного файла, всех выбранных элементов или всего решения
  • Функция очистки для автоматического запуска при сохранении

С несколькими параметрами для того, что делает CleanUp

Ответ 2

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

Sub IterateFiles()
    Dim solution As Solution = DTE.Solution
    For Each prj As Project In solution.Projects
        IterateProjectFiles(prj.ProjectItems)
    Next
End Sub

Private Sub IterateProjectFiles(ByVal prjItms As ProjectItems)
    For Each file As ProjectItem In prjItms
        If file.SubProject IsNot Nothing Then
            FormatFile(file)
            IterateProjectFiles(file.ProjectItems)
        ElseIf file.ProjectItems IsNot Nothing AndAlso file.ProjectItems.Count > 0 Then
            FormatFile(file)
            IterateProjectFiles(file.ProjectItems)
        Else
            FormatFile(file)
        End If
    Next
End Sub

Private Sub FormatFile(ByVal file As ProjectItem)
    DTE.ExecuteCommand("View.SolutionExplorer")
    If file.Name.EndsWith(".cs") OrElse file.Name.EndsWith(".vb") Then
        file.Open()
        file.Document.Activate()

        DTE.ExecuteCommand("Edit.FormatDocument", "")

        file.Document.Save()
        file.Document.Close()
    End If
End Sub