没有找到我需要的所有符号,如何使用Roslyn API找到更多符号

本文关键字:符号 何使用 Roslyn API | 更新日期: 2023-09-27 18:02:58

我正在使用roslyn API和ace文本编辑器创建一个web IDE。

当我悬停在数据上时,我需要它在给定的位置找到符号。这可以通过调用roslyn方法在某些情况下工作:

var symbol = SymbolFinder.FindSymbolAtPosition(semanticModel, offset, dotNetCodeManager.Solution.Workspace, cancellationToken);

下面这个例子中,当我将鼠标悬停在单词"table"上时,

var SchemaName = table.Schema.Name;

但是,当我将鼠标悬停在Schema或Name SymbolFinder上时。FindSymbolAtPosition返回null。

然而

:如果我到单词表的末尾请求自动补全信息我就会在推荐符号列表中得到Schema

 var result = Recommender.GetRecommendedSymbolsAtPosition(semanticModel, offset, solution.Workspace);

如何让roslyn找到对象的属性,方法或字段的符号?

没有找到我需要的所有符号,如何使用Roslyn API找到更多符号

所以FindSymbolAtPosition应该工作得很好——毕竟它是我们用于go to definition或任何其他核心语言功能的相同API。我猜测这里是您的编译或语义模型不完整,所以当我们试图绑定Schema或Name时,我们出于某种原因。推荐API可能能够找出父类的类型并知道它有成员,但由于某些原因,这些成员没有正确绑定。

我建议你尝试的是在你的语义模型或编译中,调用GetDiagnostics并验证那里没有任何意外错误。您可能会遗漏一个引用,导致所有内容偏离,清除它将使此工作正常