使用 roslyn 从文本位置转到定义

本文关键字:定义 位置 文本 roslyn 使用 | 更新日期: 2023-09-27 18:33:02

如何在当前自定义位置和文件(在项目或解决方案中)下获取任何符号定义的文件名和位置?

我执行以下步骤(简化说明):

  1. 通过以下方式创建语法树和编译的集合:

    SyntaxTrees = new List<SyntaxTree>();
    foreach (var file in projectFiles)
        syntaxTrees.Add(SyntaxTree.ParseText(File.ReadAllText(file));
    Compilation = Compilation.Create("temp.cs", null, SyntaxTrees, new MetadataReference[] { mscorlib });
    
  2. 在语法树中获取当前令牌:

    var token = currentTree.GetRoot().FindToken(textPos, false);
    

符号具有适当的定义获取方法:DeclaringSyntaxNodes 。如何在SemanticModel中解决Symbol token?谢谢。

使用 roslyn 从文本位置转到定义

您正在寻找SymbolFinder.FindSymbolAtPosition方法。