You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:06:41