我々は、このスクリーンショットの内の1つのようなVisual Studioのコマンドのリストを必要とVSの拡張に取り組んでいる:Visual Studioコマンドのリストを取得するには?
例:
- Action.Add
- アクション。 Add.NETFrameworkLaunchCondition
- Action.AddAction
- ...など
このリストにはどのような情報がありますか?
我々は、このスクリーンショットの内の1つのようなVisual Studioのコマンドのリストを必要とVSの拡張に取り組んでいる:Visual Studioコマンドのリストを取得するには?
例:
このリストにはどのような情報がありますか?
Visual Studioは、これはあなたがDTEインタフェースを経由してアクセスすることができます...\Microsoft Visual Studio 9.0\Common7\IDE\*.vsk
を示していますが含まれています。 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);
}
可能な場合は、それが最善の回避ですので、私は、これは非常に遅くなることが言及する必要があります...
Hereがあります彼のVS VoiceExtensionのためにMads KristensenによってコンパイルされたVSコマンドの便利なリスト。
実際には非同期バージョンはありません。 EnvDTE APIはUIスレッドにアフィニティ化されています。バックグラウンドスレッドで実行することはできますが、コードを通常よりもさらに遅くするUIスレッドへのマーシャリングを透過的に開始します。終わりには、すべてのコマンドを列挙することは、実際には「行なわない」ことの1つです。通常、誰かがこれを求めているなら、私はそれをやり直す必要があるのです。 –