我正在尝试通过菜单查找所有启用的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,
        };
    }
}


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

谢谢,
埃里克

最佳答案

您要使用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,
};

09-05 21:57