2010-10-15 33 views
3

我最近看中了我的代碼的新格式的風格和要替換現有代碼的所有文件。唯一的問題是我的解決方案中有100個如果不是1000個文件,我不喜歡單獨格式化每個文件。的Visual Studio宏格式的解決方案

我想知道如何創建一個宏在具有cs文件擴展名的解決方案,打開每個文件,並簡單地選擇所有的文本,然後剪切並粘貼它(這將相應地格式化)。如果它能夠排序和刪除使用語句也很好,但這並不重要,因爲我認爲這會有點困難。

我很感謝您的幫助。謝謝

+0

又見http://stackoverflow.com/questions/931406/formatting-at-once-all-the-files-in-a-visual-studio-project – 2011-10-11 09:47:21

回答

8

問題解決!下面的宏的伎倆櫃面有人有興趣:

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 
+0

不是在VS 2010的工作釷 – 2012-03-21 05:06:53

+0

電子郵件來源:http://blogs.msdn.com/b/kevinpilchbisson/archive/2004/05/17/133371.aspx – 2015-11-06 01:16:11

1

對於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 
+0

謝謝。這段代碼中有一個小錯誤。它應該是: 'elseif的projectItem.Name.LastIndexOf( 「H」)= projectItem.Name.Length - 2' – 2015-11-08 19:58:07