如何将调试断点添加到Visual Studio 2015的"查找结果"窗口中显示的行

mat*_*umz 3 visual-studio visual-studio-2015

以前的Visual Studio(VS)版本之前已回答过这个问题.提供的解决方案涉及宏,VS 2015中不再提供这些宏.我可以获得VS 2015的解决方案吗?

我想在VS中执行"查找全部",并在查找匹配的每一行上放置一个调试断点.

链接到Noah提出的上一个问题: 如何将调试断点添加到Visual Studio中"查找结果"窗口中显示的行

Ser*_*sov 8

我已经将旧宏转换为Visual Commander中的VB命令(通过向类添加显式命名空间):

Public Class C
    Implements VisualCommanderExt.ICommand

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
        Dim findResultsWindow As EnvDTE.Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindFindResults1)

        Dim selection As EnvDTE.TextSelection
        selection = findResultsWindow.Selection
        selection.SelectAll()

        Dim findResultsReader As New System.IO.StringReader(selection.Text)
        Dim findResult As String = findResultsReader.ReadLine()

        Dim findResultRegex As New System.Text.RegularExpressions.Regex("(?<Path>.*?)\((?<LineNumber>\d+)\):")

        While Not findResult Is Nothing
            Dim findResultMatch As System.Text.RegularExpressions.Match = findResultRegex.Match(findResult)

            If findResultMatch.Success Then
                Dim path As String = findResultMatch.Groups.Item("Path").Value
                Dim lineNumber As Integer = Integer.Parse(findResultMatch.Groups.Item("LineNumber").Value)

                Try
                    DTE.Debugger.Breakpoints.Add("", path, lineNumber)
                Catch ex As System.Exception
                    ' breakpoints can't be added everywhere
                End Try
            End If

            findResult = findResultsReader.ReadLine()
        End While
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

  • @Demodave我发现了这个问题。该脚本重点关注 Find Results 1 窗口。当您使用“查找全部”时,您很可能会使用结果选项来列出结果:“查找结果表” 当脚本仅从“查找结果 1”窗口读取时。有什么办法可以把脚本改成表吗?毕竟它更容易阅读。尝试查看 EnvDTE,但似乎找不到该窗口,因为没有 2019 年的文档。 (2认同)