如何设置Resharper延迟启动,待Visual Studio项目加载完成后运行?
我之前也被VS启动时ReSharper抢占资源导致的界面卡顿折腾过,给你两个实用的解决办法:
方案一:用ReSharper内置设置延迟启动
这是官方提供的最省心的方案,专门针对启动卡顿问题:
- 打开Visual Studio,点击顶部菜单栏的
Extensions→ReSharper→Options(或者直接按快捷键Alt+R, O快速打开) - 在选项窗口左侧导航栏,找到
Environment→General分类 - 勾选**"Delay startup until solution is fully loaded"**(中文界面对应“延迟启动直到解决方案完全加载”)
- 点击
Save保存设置,重启Visual Studio后就能生效
这个设置会让ReSharper等VS把所有项目文件加载完毕、界面初始化完成后再启动,能大幅缓解启动时的卡顿情况。
方案二:编写VS扩展手动控制ReSharper启停
如果内置设置没达到你的预期,或者你需要更灵活的手动控制,可以写一个极简的VS扩展,核心是调用ReSharper的内置切换命令:
步骤1:创建VS扩展项目
打开Visual Studio,新建项目选择**"Visual Studio Extension"模板(需要安装VS SDK),选择"Command"**类型的扩展。
步骤2:修改命令执行逻辑
在自动生成的命令类中,替换Execute方法的逻辑,调用ReSharper的切换命令:
using Microsoft.VisualStudio.Shell; using System; using System.ComponentModel.Design; using Task = System.Threading.Tasks.Task; namespace ReSharperToggle { internal sealed class ToggleReSharperCommand { public const int CommandId = 0x0100; public static readonly Guid CommandSet = new Guid("这里替换成你的扩展GUID"); private readonly AsyncPackage package; private ToggleReSharperCommand(AsyncPackage package, OleMenuCommandService commandService) { this.package = package ?? throw new ArgumentNullException(nameof(package)); commandService = commandService ?? throw new ArgumentNullException(nameof(commandService)); var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new MenuCommand(this.Execute, menuCommandID); commandService.AddCommand(menuItem); } public static ToggleReSharperCommand Instance { get; private set; } private IAsyncServiceProvider ServiceProvider => this.package; public static async Task InitializeAsync(AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(package.DisposalToken); OleMenuCommandService commandService = await package.GetServiceAsync(typeof(IMenuCommandService)) as OleMenuCommandService; Instance = new ToggleReSharperCommand(package, commandService); } private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); // 调用ReSharper的暂停/启用切换命令 var dte = ServiceProvider.GetServiceAsync(typeof(EnvDTE.DTE)).Result as EnvDTE.DTE; dte.ExecuteCommand("ReSharper_ToggleSuspended"); } } }
步骤3:配置快捷键(可选)
编译安装扩展后,你可以给这个命令绑定快捷键:
- 打开VS的
Tools→Options→Environment→Keyboard - 在
Show commands containing输入框中搜索ReSharperToggle.ToggleReSharperCommand(你的命令全名) - 设置你习惯的快捷键,比如
Ctrl+Shift+R,点击Assign保存
这个扩展的核心是调用ReSharper内置的ReSharper_ToggleSuspended命令,一键切换它的暂停/启用状态。你甚至可以进一步扩展逻辑,让它在解决方案加载完成后自动执行一次,实现自动延迟启动的效果。
内容的提问来源于stack exchange,提问作者rollsch
相关产品推荐
相关产品推荐

