查找VSIX命令VS 2019的公共ID

时间:2019-08-09 09:40:38

标签: c# visual-studio-2017 vsix

在VS2017中,我正在用C#编写自己的VSIX命令。从C#代码中,我想调用另一个VSIX命令(这不是我的,我只知道该按钮上的工具提示)。如何找到该按钮的命令ID?

我尝试了this 但没有帮助

即使我也尝试过,但没有运气

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
            @"Software\Microsoft\VisualStudio\" + DTE.Version + @"\General");
        key.SetValue("EnableVSIPLogging", 1);
    }
}

获取与VSIX命令关联的命令ID(按钮)。

1 个答案:

答案 0 :(得分:0)

VS 2017和更高版本不再使用系统注册表,因此尝试为VS 2017,VS 2019等设置该注册表项将不再起作用。这些设置现在位于privateregistry.bin中,虽然您可以按详细说明here编辑它的方向,也可以使用vsregedit.exe实用程序,但是我也不建议这样做。编辑privateregistry.bin很麻烦,并且没有记录vsregedit.exe。

现在,我建议安装Mads Extensibility Essentials package。其中包括一个软件包,该软件包将在“查看”菜单下添加“启用VSIP日志记录”菜单命令(您需要重新启动VS才能使更改生效)。

安装后,只需使用感兴趣的命令下拉菜单,然后在按住CTRL + SHIFT键的同时,单击要用于其详细信息的菜单项。这将显示一个带有Guid和CmdID的“ VSDebug消息”对话框,该对话框唯一地标识您单击的菜单命令。请注意,这仅适用于通过VSSDK的VSCT编译器创建的菜单命令和工具栏按钮。某些工具窗口可能具有基于WPF的自定义菜单或工具栏,这些菜单或工具栏未使用VS可扩展性API和资源来实现。在这些情况下,您无法使用VS可扩展性API来调用它们。

此致