3 votes

DTE.ExecuteCommand("Edit.NextBookmark")

En utilisant VS2010

RÉPONSE merci à Hans (puisque je suis trop humble pour répondre à ma propre question pendant 8 heures)

 Sub CreateBreakPoint()

        Dim doc As TextDocument = _
                CType(DTE.ActiveDocument.Object("TextDocument"), TextDocument)
        Dim point As EditPoint = doc.StartPoint.CreateEditPoint

        While point.NextBookmark()
            Try
                point.ClearBookmark()
                DTE.Debugger.Breakpoints.Add("", DTE.ActiveDocument.FullName, point.Line(), 1, "", dbgBreakpointConditionType.dbgBreakpointConditionTypeWhenTrue, "c#", "", 0, "", 0, dbgHitCountType.dbgHitCountTypeNone)
            Catch ex As Exception
                MsgBox("error: " + ex.Message)
            End Try
        End While
        MsgBox("Done")

    End Sub

J'ai une macro qui place des points d'arrêt à chaque signet. Cela fonctionne (comme un marteau-pilon)... mais par curiosité, comment puis-je faire l'une des choses suivantes afin d'utiliser une "vraie" boucle "For" ?

  1. récupérer une liste d'objets Signet (apparemment avec une propriété de numéro de ligne)
  2. vérifier que DTE.ExecuteCommand("Edit.NextBookmark") renvoie false ou une indication que j'ai atteint le dernier signet
  3. récupérer une liste d'objets Bookmark avec une "requête" spécifique afin de ne pas avoir à supprimer d'abord tous les bookmarks actuels

le code actuel

Public Module BookMarksToBreakPoints

    Sub TemporaryMacro()
        Dim bookmarkWin As Window = DTE.Windows.Item(WindowKinds.vsWindowKindBookmarks)

        While True
            Try
                DTE.ExecuteCommand("Edit.NextBookmark")
                DTE.ExecuteCommand("Edit.ToggleBookmark")
                DTE.ExecuteCommand("Debug.ToggleBreakpoint")
            Catch e As Exception
                MsgBox("Done")
                Exit While
            End Try
        End While

    End Sub
End Module

1voto

kevcoder Points 739

Merci à Hans Passant pour m'avoir poussé dans la bonne direction. La macro finale :

Sub CreateBreakPoint()

    Dim doc As TextDocument = _
            CType(DTE.ActiveDocument.Object("TextDocument"), TextDocument)
    Dim point As EditPoint = doc.StartPoint.CreateEditPoint

    While point.NextBookmark()
        Try
            point.ClearBookmark()
            DTE.Debugger.Breakpoints.Add("", DTE.ActiveDocument.FullName, point.Line(), 1, "", dbgBreakpointConditionType.dbgBreakpointConditionTypeWhenTrue, "c#", "", 0, "", 0, dbgHitCountType.dbgHitCountTypeNone)
        Catch ex As Exception
            MsgBox("error: " + ex.Message)
        End Try
    End While
    MsgBox("Done")

End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X