如何从Visual Studio 2012中的CommandBarButton获取EnvDTE.Command

时间:2013-06-08 20:06:14

标签: visual-studio visual-studio-2012 visual-studio-extensions

我正在尝试通过菜单找到所有已启用的resharper命令。我可以使用以下代码找到所有菜单项。但是我找不到如何从DTE命令集合中获取实际命令。

var resharper = ((CommandBars)_dte.Application.CommandBars)["RESHARPER"];
var refactor = (CommandBarPopup)resharper.Controls["&Refactor"].Control;
foreach (var c in refactor.Controls)
{
    var cbb = c as CommandBarButtonClass;
    if (cbb != null)
    {
        yield return new VoiceCommand
        {
            Command = _dte.Commands.Item(???),
            Key = cbb.accName,
        };  
    }
}

我应该使用什么属性来查找命令(上面的???)?

谢谢你, 埃里克

1 个答案:

答案 0 :(得分:1)

您想要使用CommandInfo method,如下所示:

Guid guid;
int id;
_dte.Commands.CommandInfo(cbb, out guid, out id);
yield return new VoiceCommand
{
    Command = _dte.Commands.Item(guid, id),
    Key = cbb.accName,
};