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

如何创建Rider插件自定义Action?添加后未在工具菜单及搜索结果显示如何解决

问题原因
  • 自定义Action未绑定到插件的Zone容器,Rider的IoC扫描不到该组件,导致没有注册到IDE的动作管理中心
  • Action的数字ID或字符串ID与内置/其他插件的ID冲突,导致注册被跳过
  • 未触发插件模板内置的Action清单生成任务,IDE无法读取到新添加的Action声明
  • 调试用的IDE沙箱存在旧插件缓存,新修改的插件代码未被正确加载
  • Action类放置的项目错误,后端动作代码写到了Rider前端项目中,无法被后端逻辑识别
解决步骤
  1. 给Action绑定插件自定义Zone
    首先确认插件根目录下存在模板自动生成的Zone定义类,示例如下:
using JetBrains.Application.BuildScript.Application.Zones;

[ZoneDefinition]
public class MyPluginZone : IZone
{
}

之后给你的Action类添加Component属性绑定Zone,同时修改Action的ID避免冲突,修改后的完整代码如下:

[Action("你的插件唯一前缀.ActionShowMessageBox", "Show message box", Id = 987654321)]
[Component(Zone = typeof(MyPluginZone))]
public class ActionShowMessageBox : IExecutableAction, IInsertLast<ToolsMenu>{
    public bool Update(IDataContext context, ActionPresentation presentation, DelegateUpdate nextUpdate) => true;

    public void Execute(IDataContext context, DelegateExecute nextExecute){
        var solution = context.GetData(JetBrains.ProjectModel.DataContext.ProjectModelDataConstants.SOLUTION);
        MessageBox.ShowInfo(solution?.SolutionFile != null
            ? $"{solution.SolutionFile?.Name} solution is opened"
            : "No solution is opened");
    }
}
  1. 执行完整的解决方案重新生成,触发GeneratePluginXml任务生成最新的动作注册清单,不要使用增量编译
  2. 清理调试沙箱缓存:可在插件项目的调试配置中,勾选「每次启动重置沙箱」选项,避免旧缓存干扰
  3. 确认Action类放在后缀为.ReSharper的后端项目中,不要放到.Rider的前端项目里

修改完成后按F5启动调试,即可在Tools菜单和Ctrl+Shift+A搜索结果中找到对应的动作。

内容的提问来源于stack exchange,提问作者Apostolis Bekiaris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:03