为什么ReferencedSymbol的位置为空?

时间:2013-10-30 16:18:14

标签: c# roslyn

我试图在特定符号的解决方案中找到所有引用,但Locations属性始终为空。我加载独立项目,找到我正在寻找的符号,然后请求编译给我所有对符号的引用。我得到一个引用(正确,因为只有一个属性用法),但Locations属性为空。这是代码

IWorkspace workspace = Workspace.LoadStandAloneProject(projectPath);

var solution = workspace.CurrentSolution;

var searchAttributeName = typeof(OneToOneAttribute).FullName;

var project = solution.Projects.First();

var compilation = project.GetCompilation();

var attSymbol = (NamedTypeSymbol)compilation.GetTypeByMetadataName(searchAttributeName);

var references = attSymbol.FindReferences(solution);

    foreach (ReferencedSymbol referencedSymbol in references)
    {
        foreach (ReferenceLocation location in referencedSymbol.Locations)
        {
        }
    }

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,LoadStandAloneProject没有正确创建项目引用。正确的解决方法是使用LoadSolution。