找不到方法参考的位置

Location not found for a method reference

我正在使用 Roslyn 查找方法参考。 我在同一个解决方案中有三个不同的项目。

UI => BLL => DB

UI 在 BLL 中调用一个名为 GetData 的方法,BLL 在数据库中调用一个名为 GetData

的方法

在 BLL 项目中查找方法引用时,会找到 UI 中的引用。

但是在数据库项目中查找引用时,未找到 BLL 中对 GetData 的引用(位置 属性 为空)。知道为什么它只能在 BLL 项目的 UI 项目中找到吗?

代码如下:

foreach (var file in p.Documents)
{
    if (file.Name.StartsWith(".NETFramework") || file.Name.Contains("AssemblyInfo.cs"))
    {
         continue;
    }

    var semanticModel = file.GetSemanticModelAsync().Result;

    var classParser = new ClassParser(semanticModel);

    var tree = file.GetSyntaxTreeAsync().Result;

    //  Get public methods
    var methodDeclarations = tree.GetRoot().DescendantNodes()
        .OfType<MethodDeclarationSyntax>()
        .Where(method => method.Modifiers.Any(modifier => modifier.Kind() == SyntaxKind.PublicKeyword)).ToList();

    var methods = ParseMethods(methodDeclarations, file.Name);
    var methodReferences = new List<MethodDTO>();
    foreach (var method in methods)
    {
        var symbol = GetMethodSymbol(method.Name, semanticModel, file);
        var references = SymbolFinder.FindReferencesAsync(symbol, solution).Result;

        if (references != null && references.Any())
        {
            foreach (var reference in references)
            {
                if (reference.Locations.Any())
                {
                    foreach (var location in reference.Locations)
                    {
                    }
                }                                        
            }
        }                
    }
}

语义模型的诊断输出中只有警告。

所以问题与由于 msbuild 的正确版本问题导致工作区未正确加载有关。