为仅作为键盘快捷方式可用的命令在 Visual Studio 工具栏上添加一个按钮

10 浏览
0 Comments

为仅作为键盘快捷方式可用的命令在 Visual Studio 工具栏上添加一个按钮

这个问题与ReSharper YouTrack问题相关。

在安装了ReSharper 7.1.1的Visual Studio 2010中,如果我进入工具 > 选项 > 环境 > 键盘,会有一个名为ReSharper_SilentCleanupCode的命令。

我想将这个命令绑定到工具栏按钮上。

使用工具 > 自定义 > 命令似乎不可能实现这一点,因为在此对话框中仅提供已有关联菜单项的命令。我感兴趣的特定ReSharper命令(Silent Code Cleanup)不会出现在任何菜单中,因此无法使用“GUI”将其分配给工具栏按钮。

有没有其他方法将仅限键盘的命令绑定到工具栏按钮上?(ReSharper的某个程序员认为可以使用“VS脚本编辑器”,但我没有找到相关信息。)

编辑

我应该在一开始就提到这个。虽然azhrei的宏解决方案对于Visual Studio 2010非常好,但一旦我升级到VS 2012,它将失效,因为不再支持宏。如果有人有一个在VS 2012中仍然有效的解决方案,那将更好。(或者也许VS 2012的工具栏本来就没有同样的限制?)

0
0 Comments

问题的原因是,某个命令只能通过键盘快捷键来执行,无法在 Visual Studio 的工具栏中找到对应的按钮。解决方法是添加一个执行该命令的宏,并将该宏添加到工具栏中。

具体步骤如下:

1. 添加一个执行命令的宏,代码如下:

Sub _ReSharper_SilentCleanupCode()
    DTE.ExecuteCommand("ReSharper_SilentCleanupCode")
End Sub

2. 将这个宏放在一个在“自定义命令”对话框的“宏”分类中可见的模块中,比如“Samples”或“MyMacros.RecordingModule”,而不是默认的“MyMacros.Module1”。

3. 进入“工具”->“自定义”->“命令”,选择要添加按钮的工具栏。

4. 点击“添加命令...”,选择“宏”分类。

5. 选择你的宏,比如“Macros.Samples._ReSharper_SilentCleanupCode”。

6. 点击“修改选择”,将名称修改为“#-)”或其他你认为能代表“ReSharper Silent Code Cleanup”的文本,但不要太长。

这样就可以在工具栏中添加一个按钮来执行只能通过键盘快捷键执行的命令了。

此方法适用于 Visual Studio 2010 和 ReSharper 7.1.2。对于 Visual Studio 2012,可以尝试使用 Visual Commander 插件来实现相同的功能。

如果想在 Visual Studio 2012 中使用这个宏,可以将其转换为 Visual Commander 命令,然后将其添加到工具栏中。具体步骤请参考visualstudiogallery.msdn.microsoft.com/…

另外,还有一个等效的 C# 版本的宏代码如下:

using EnvDTE;
using EnvDTE80;
public class ResharperMacro : VisualCommanderExt.ICommand
{
    public void Run(DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        DTE.ExecuteCommand("ReSharper_ToggleSuspended");
    }
}

0