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

如何让Rider插件支持获取所有类型文件的本地路径?

解决Rider插件无法获取非代码文件路径的问题

你的代码中使用document.GetPsiSourceFile(solution)获取文件路径,该方法仅对具备PSI(Program Structure Interface)支持的代码文件(如C#、VB.NET)有效,txt这类纯文本文件没有对应的PSI源文件,因此会返回null,导致无法获取路径。

修改后的代码

public void Execute(IDataContext context, DelegateExecute nextExecute)
{
    var solution = context.GetData(JetBrains.ProjectModel.DataContext.ProjectModelDataConstants.SOLUTION);
    if (solution == null)
        return;

    var textControl = context.GetData(TextControlDataConstants.TEXT_CONTROL);
    if (textControl == null)
        return;

    var document = textControl.Document;
    var offset = textControl.Caret.Offset();
    var lineNumber = document.GetCoordsByOffset(offset).Line.Plus1();

    // 优先从上下文获取通用文件对象,支持所有类型文件
    var virtualFile = context.GetData(CommonDataConstants.VIRTUAL_FILE);
    if (virtualFile == null)
    {
        // 上下文未传递时,从Document获取对应文件作为备选
        virtualFile = document.File;
    }

    if (virtualFile == null || !virtualFile.IsValid)
        return;

    var fullPath = $"{virtualFile.FullPath}?line={lineNumber}";
    var file = solution.SolutionDirectory / "file.txt";

    // 可添加后续逻辑,如写入文件、复制路径到剪贴板等
}

关键改动说明

  • 替换核心文件获取逻辑:使用CommonDataConstants.VIRTUAL_FILE从上下文获取VirtualFile,这是Rider中表示本地文件的通用对象,支持所有类型文件(代码、文本、配置文件等)。
  • 增加 fallback 机制:当上下文未传递VirtualFile时,从document.File获取文件对象,覆盖更多使用场景。
  • 添加有效性校验:增加virtualFile.IsValid判断,避免处理已失效的文件对象。

修改后插件即可获取所有已打开文件的本地路径,包括txt、md、json等非代码类型文件。

内容的提问来源于stack exchange,提问作者zubair Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:56:10