0
Я получу символы локальных переменных в теле метода, поэтому я использую semanticModel.LookupSymbols.but, и результат не имеет ничего общего с локальными варами. код:Почему результат lookupsymbols api отличается?
var workspace = MSBuildWorkspace.Create();
var solution = workspace.OpenSolutionAsync(soluPath).Result;
var doc = solution.Projects[0].Documents[0];
var tree = doc.getSyntaxTreeASync().Result;
var semanticModel = doc.getSemanticModelASync().Result;
var symbols = semanticModel.LookupSymbols(tree.Length);
, но если я попробовать другой путь, результат есть it.The код:
var tree=SyntaxFactory.ParseSyntaxTree(source);
var compilation = VisualBasicCompilation.Create("m",new []{tree},new[]{mscorlib});
var semanticModel = compilation.GetSemanticModel(tree);
var symbols=model.LookupSymbols(tree.Length);
Источником образца:
Class C
End Class
Moudle Program
Private i As Integer = 0
Public Sub Main()
DIm j as Integer = 0 : j += i
End Sub
End Module
первый выход кода :
C
Program
Public Sub Main()
второй вывод кода:
C
j
Microsoft
Private i As Integer
Program
Public Sub Main()
System
Windows
Моей целью является локальная переменная «j». В чем они отличия? спасибо ~
Что поделаешь? Что вы ожидали увидеть, и что вы на самом деле видели? – JoshVarty
'tree.Length' не будет иметь никаких полезных символов. – SLaks
Если tree.Length бесполезен, каков должен быть параметр? –