Visual Studio Macro to Output All Key Bindings

In my new role I’m primarily developing in C# whereas my primary language in the past has been Visual Basic .NET. With a different language, comes a different Visual Studio profile, and with a different Visual Studio profile comes different key bindings.

This Visual Studio macro outputs each Visual Studio command (alphabetically) and its associated key bindings. When run the key bindings will be output to Visual Studio’s Output window, from here you can copy and paste them into whatever format you want.

Public Sub DumpBindings()

    Dim commands As New System.Collections.Generic.Dictionary(Of String, System.Collections.Generic.List(Of String))

    For Each command As Command In DTE.Commands

        Dim bindings As Object() = DirectCast(command.Bindings, Object())

       If String.IsNullOrEmpty(command.Name) OrElse bindings.Length = 0 Then

        Continue For

        End If

        commands.Add(command.Name, New System.Collections.Generic.List(Of String))

        For Each binding As Object In bindings

        Dim bindingValue As String = DirectCast(binding, String)

        commands(command.Name).Add(bindingValue)

        Next

    Next

    Dim commandNames(commands.Keys.Count - 1) As String

    commands.Keys.CopyTo(commandNames, 0)

    Array.Sort(commandNames)

    For Each commandName As String In commandNames

    Debug.WriteLine(commandName)

    commands(commandName).Sort()

    For Each binding As String In commands(commandName)

    Debug.WriteLine("{0}{1}", ControlChars.Tab, binding)

    Next

    Next

End Sub