2012-08-07 14 views
9

Stiamo lavorando su un'estensione VS che richiede un elenco di comandi di Visual Studio come quello di questa schermata:Come ottenere l'elenco dei comandi di Visual Studio?

Screen Shot from Visual Studio 2010, Tools > Options > Keyboard

Esempio:

  • Action.Add
  • azione. Add.NETFrameworkLaunchCondition
  • Action.AddAction
  • ... ecc.

Dove possiamo trovare o in che modo possiamo accedere a questo elenco?

risposta

3

Visual Studio contiene questo elenca ...\Microsoft Visual Studio 9.0\Common7\IDE\*.vsk

8

è possibile accedervi tramite le interfacce DTE. Ottenere l'interfaccia EnvDTE.DTE tramite GetService(typeof(SDTE)) (o altro meccanismo appropriato) e quindi:

EnvDTE.DTE dte = ...; 
var commands = dte.Commands.Cast<EnvDTE.Command>(); 

foreach (var command in commands.OrderBy(c => c.Name)) 
{ 
    Console.WriteLine(command.Name); 
} 

Devo dire questo può essere molto lento, quindi è meglio evitare se potete ...

+0

Non c'è davvero una versione asincrona. L'API EnvDTE è affinizzata con il thread dell'interfaccia utente. È possibile eseguirlo su un thread in background, ma si attiverà il marshalling al thread dell'interfaccia utente in modo trasparente, il che renderebbe il codice ancora più lento del normale. Alla fine della giornata, enumerare tutti i comandi è davvero una di quelle cose "non farlo". Normalmente se qualcuno me lo chiede, respingo e sfido loro perché hanno bisogno di farlo. –

0

Here è un una pratica lista di comandi VS compilati da Mads Kristensen per il suo VS VoiceExtension.

Problemi correlati