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" ?
- récupérer une liste d'objets Signet (apparemment avec une propriété de numéro de ligne)
- vérifier que DTE.ExecuteCommand("Edit.NextBookmark") renvoie false ou une indication que j'ai atteint le dernier signet
- 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