2012-07-24 23 views

Odpowiedz

4

Oto twoje makro, ale ustawianie przerw na 1000+ funkcji zajmuje trochę czasu ... i spowolni działanie Visual Studio!

Sub BreakAtEveryFunction() 
    For Each project In DTE.Solution.Projects 
     SetBreakpointOnEveryFunction(project) 
    Next project 
End Sub 


' Macro editor 
Sub SetBreakpointOnEveryFunction(ByVal project As Project) 
    Dim cm = project.CodeModel 

    ' Look for all the namespaces and classes in the 
    ' project. 
    Dim list As List(Of CodeFunction) 
    list = New List(Of CodeFunction) 
    Dim ce As CodeElement 
    For Each ce In cm.CodeElements 
     If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then 
      ' Determine whether that namespace or class 
      ' contains other classes. 
      GetClass(ce, list) 
     End If 
    Next 

    For Each cf As CodeFunction In list 

     DTE.Debugger.Breakpoints.Add(cf.FullName) 
    Next 

End Sub 

Sub GetClass(ByVal ct As CodeElement, ByRef list As List(Of CodeFunction)) 

    ' Determine whether there are nested namespaces or classes that 
    ' might contain other classes. 
    Dim aspace As CodeNamespace 
    Dim ce As CodeElement 
    Dim cn As CodeNamespace 
    Dim cc As CodeClass 
    Dim elements As CodeElements 
    If (TypeOf ct Is CodeNamespace) Then 
     cn = CType(ct, CodeNamespace) 
     elements = cn.Members 
    Else 
     cc = CType(ct, CodeClass) 
     elements = cc.Members 
    End If 
    Try 
     For Each ce In elements 
      If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then 
       GetClass(ce, list) 
      End If 
      If (TypeOf ce Is CodeFunction) Then 
       list.Add(ce) 
      End If 
     Next 
    Catch 
    End Try 
End Sub 
+1

Aby ten skrypt działał w VS 2012, możesz skopiować funkcje do nowego projektu Addin i wywołać "BreakAtEveryFunction" wewnątrz metody "OnConnection" projektu Addin. Skrypt jest nieco zbyt obszerny w tym, że robi metody .NET, również ma błędy tu i tam, projekt Addin będzie narzekał na "DTE.Debugger" i "DTE.Solution.Projects", zmień "DTE" na "_applicationObject" . Aby uzyskać więcej informacji na temat projektu Addin, zobacz [Ta odpowiedź.] (Http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012/12394986#12394986) – goamn

1

Przyjęta odpowiedź nie zadziałała dla mnie z jakiegoś powodu. I nie sądzę, moje obejście dotyczy Visual Studio 2010. Ale użyłem rozszerzenie Macros for Visual Studio z moim Visual Studio 2015, aby to zrobić.

Kroki:

  1. znalezienia (Ctrl + F) prawo wcięcie w nawiasie otwierającym metod. Zwykle jest to 8 białych spacji (lub 2 zakładki itp. W zależności od ustawień, które mogłeś wprowadzić).
  2. Dodaj do tego nawias otwierający {.
  3. Dodaj to za pomocą \r\n, aby upewnić się, że nie pasuje on do zagnieżdżonych nawiasów klamrowych. Teraz może wyglądać jak \r\n {. Włącz również wyszukiwanie wyrażenia regularnego (naciskając przycisk * w oknie wyszukiwania).
  4. Rozpocznij nagrywanie makra.
  5. Naciśnij klawisz F3, a następnie naciśnij F9, aby dodać punkt przerwania. To dodaje punkt przerwania do pierwszej metody znalezionej przy użyciu podstępu.
  6. Zatrzymaj nagrywanie makra. Graj według liczby możliwych metod.
  7. Ostrzeżenie: Bądź świadomy, kiedy dojdziesz do końca. W przeciwnym razie zacznie się od początku i zacznie usuwać właśnie dodane punkty przerwania.

Poinformuj mnie, że jest jakieś zamieszanie.

Powiązane problemy