2012-08-07 6 views
9

我々は、このスクリーンショットの内の1つのようなVisual Studioのコマンドのリストを必要とVSの拡張に取り組んでいる:Visual Studioコマンドのリストを取得するには?

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

例:

  • Action.Add
  • アクション。 Add.NETFrameworkLaunchCondition
  • Action.AddAction
  • ...など

このリストにはどのような情報がありますか?

答えて

3

Visual Studioは、これはあなたがDTEインタフェースを経由してアクセスすることができます...\Microsoft Visual Studio 9.0\Common7\IDE\*.vsk

8

を示していますが含まれています。 GetService(typeof(SDTE))(または他の適切な機構)を介してEnvDTE.DTEインターフェイスを取得し、その後:

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

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

可能な場合は、それが最善の回避ですので、私は、これは非常に遅くなることが言及する必要があります...

+0

実際には非同期バージョンはありません。 EnvDTE APIはUIスレッドにアフィニティ化されています。バックグラウンドスレッドで実行することはできますが、コードを通常よりもさらに遅くするUIスレッドへのマーシャリングを透過的に開始します。終わりには、すべてのコマンドを列挙することは、実際には「行なわない」ことの1つです。通常、誰かがこれを求めているなら、私はそれをやり直す必要があるのです。 –

0

Hereがあります彼のVS VoiceExtensionのためにMads KristensenによってコンパイルされたVSコマンドの便利なリスト。

関連する問題