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);
但如果我嘗試另一種方式,結果有後援代碼是:
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是無益的,參數應該是什麼? –