Visual Studio 2005-2015では、特定の参照を含むすべての行を検索して「検索結果」ウィンドウに表示することができます。Visual Studioの "検索結果"ウィンドウに表示される行にデバッグブレークポイントを追加するには
これらの結果の行が表示されたので、すべてのデバッグブレークポイントを追加できるキーボードショートカットはありますか?
Visual Studio 2005-2015では、特定の参照を含むすべての行を検索して「検索結果」ウィンドウに表示することができます。Visual Studioの "検索結果"ウィンドウに表示される行にデバッグブレークポイントを追加するには
これらの結果の行が表示されたので、すべてのデバッグブレークポイントを追加できるキーボードショートカットはありますか?
Visual Studioマクロを使用すると、これを簡単に実行できます。
Imports System
Imports System.IO
Imports System.Text.RegularExpressions
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Public Module CustomMacros
Sub BreakpointFindResults()
Dim findResultsWindow As Window = DTE.Windows.Item(Constants.vsWindowKindFindResults1)
Dim selection As TextSelection
selection = findResultsWindow.Selection
selection.SelectAll()
Dim findResultsReader As New StringReader(selection.Text)
Dim findResult As String = findResultsReader.ReadLine()
Dim findResultRegex As New Regex("(?<Path>.*?)\((?<LineNumber>\d+)\):")
While Not findResult Is Nothing
Dim findResultMatch As 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 Exception
' breakpoints can't be added everywhere
End Try
End If
findResult = findResultsReader.ReadLine()
End While
End Sub
End Module
:
は、ソースエディタで次のように貼り付け...モジュールを追加| Visual Studioの中では、マクロIDEを開き、MyMacrosを右クリックして、新しいモジュールを追加し、追加を選択するAltキーを押しながらF11を打ちます
この例では、「Find Results 1」ウィンドウの結果を使用しています。結果ウィンドウごとに個別のショートカットを作成することもできます。オプション...と左側のナビゲーションで環境セクションの下キーボードを選択|
あなたはツールに行くことによって、キーボードのショートカットを作成することができます。マクロを選択し、好きなショートカットを割り当てます。
メニューまたはツールバーにマクロを追加するには、ツール|カスタマイズ...に進み、左側のナビゲーションでマクロセクションを選択します。リスト内のマクロを見つけたら、任意のメニューやツールバーにドラッグして、テキストやアイコンを自由にカスタマイズすることができます。
単語を正確に検索することができれば、キーボードショートカットを使用してすばやく検索できます。
ツール - >オプション - >的環境 - >キーボード
+ Altキー+ F11とF10を制御するためにそれらを割り当て、すべての結果を非常に迅速に処理することができます。私は次の参照に行くためのショートカットを見つけていない。
私はすべてのブレークポイントを無効にし、 "例外としてすべてをキャッチする"にブレークポイントを設定するのに似たものが必要でした。しかし、これを少し拡張して、選択した文字列が出現するたびにブレークポイントを配置します。これで行う必要があるのは、ブレークポイントを設定する文字列を強調表示してマクロを実行することだけです。
Sub BreakPointAtString()
Try
DTE.ExecuteCommand("Debug.DisableAllBreakpoints")
Catch ex As Exception
End Try
Dim tsSelection As String = DTE.ActiveDocument.Selection.text
DTE.ActiveDocument.Selection.selectall()
Dim AllText As String = DTE.ActiveDocument.Selection.Text
Dim findResultsReader As New StringReader(AllText)
Dim findResult As String = findResultsReader.ReadLine()
Dim lineNum As Integer = 1
Do Until findResultsReader.Peek = -1
lineNum += 1
findResult = findResultsReader.ReadLine()
If Trim(findResult) = Trim(tsSelection) Then
DTE.ActiveDocument.Selection.GotoLine(lineNum)
DTE.ExecuteCommand("Debug.ToggleBreakpoint")
End If
Loop
End Sub
はどうもありがとう
これはとてもクールです。ポールありがとう – Noah
ポール、:)それはあなたのために働くホープが、私は次のエラー(メッセージボックス)を持って、私は私のPCを再起動する必要がある場合があります
Error
---------------------------
Error HRESULT E_FAIL has been returned from a call to a COM component.
---------------------------
OK
---------------------------
は、私は非常に簡単です、次の解決策を提案するだろうが、それは私が
Sub BreakPointsFromSearch()
Dim n As Integer = InputBox("Enter the number of search results")
For i = 1 To n
DTE.ExecuteCommand("Edit.GoToNextLocation")
DTE.ExecuteCommand("Debug.ToggleBreakpoint")
Next
End Sub
F3のために働くとF9は、任意のショートカットを再割り当てすることなく、これを行います。 – StuperUser
F3は、検索結果の次の行ではなく、現在のパネルで次の結果に進みます。Find ResultsペインでF3キーを使用することもできますが、Enterキーを押してコードと結果ペインの間にタブを移動する必要があります。この答えは、キーストロークの多くを節約します。 –