C# 为什么是ReferencedSymbol';什么位置是空的?

C# 为什么是ReferencedSymbol';什么位置是空的?,c#,roslyn,C#,Roslyn,我试图在特定符号的解决方案中查找所有引用,但Locations属性始终为空。我加载独立项目,找到我正在寻找的符号,然后要求编译为我提供对符号的所有引用。我得到一个引用(正确,因为只有一个属性用法),但Locations属性为空。这是密码 IWorkspace workspace = Workspace.LoadStandAloneProject(projectPath); var solution = workspace.CurrentSolution; var searchAttribut

我试图在特定符号的解决方案中查找所有引用,但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)
        {
        }
    }

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

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

要检查compilation.GetDiagnostics()提供了什么?是否存在编译错误或其他表明您的项目加载不正常的东西?@JasonMalinowski:我有五个错误,缺少引用。所以,如果我理解这一点,即使项目有引用和编译,当像这样加载时,我必须手动添加它们?这可能是LoadStandAloneProject的一个问题。您是否考虑过加载包含您的项目的完整解决方案?@JasonMalinowski:是的,稍后我将加载该解决方案,这只是一个原型,我刚刚将属性定义移动到项目中。感谢您的帮助。为了检查,compilation.GetDiagnostics()提供了什么?是否存在编译错误或其他表明您的项目加载不正常的东西?@JasonMalinowski:我有五个错误,缺少引用。所以,如果我理解这一点,即使项目有引用和编译,当像这样加载时,我必须手动添加它们?这可能是LoadStandAloneProject的一个问题。您是否考虑过加载包含您的项目的完整解决方案?@JasonMalinowski:是的,稍后我将加载该解决方案,这只是一个原型,我刚刚将属性定义移动到项目中。谢谢你的帮助。