感谢Roslyn可以访问 .Net 编译器,在我们的项目Gcop 中,我们需要有调用方法的引用列表。
VS IDE 显示了非常适合的参考位置,如下所示:
实际上,我想了解哪个类/名称空间甚至程序集正在通过Roslyn C# 语法调用我的方法。
目前我可以在这里访问 MethodSymbol :
var methodSymbol = semanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
我应该写什么来访问这个方法的引用?
//最近添加以进行双重检查
var solutionPath = Utilities.DteExtensions.SolutionFullPath;
var msWorkspace = Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(solutionPath).Result;
var result = new List<ReferenceLocation>();
var refrences = SymbolFinder.FindReferencesAsync(methodSymbol, solution).Result;
foreach (var refernc in refrences)
{
foreach (var location in refernc.Locations)
{
result.Add(location);
}
}
///???????? why the result is empty ?