如何在当前自定义位置和文件(在项目或解决方案中)下获取任何符号定义的文件名和位置?
我执行以下步骤(简化说明):
-
通过以下方式创建语法树和编译的集合:
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 });
-
在语法树中获取当前令牌:
var token = currentTree.GetRoot().FindToken(textPos, false);
符号具有适当的定义获取方法:DeclaringSyntaxNodes
。如何在SemanticModel
中解决Symbol
token
?谢谢。
您正在寻找SymbolFinder.FindSymbolAtPosition
方法。