Местоположение не найдено для ссылки на метод - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Roslyn, чтобы найти ссылки на методы.У меня есть три разных проекта в одном решении.

UI => BLL => DB

Пользовательский интерфейс вызывает метод в BLL с именем GetData, а BLL вызывает метод в DB с именем GetData

При поиске ссылок на метод в проекте BLL ссылка в пользовательском интерфейсе найдена.

Но при поиске ссылки в проекте БД ссылка на GetData в BLL не найдена (свойство location пусто).Любая идея, почему он находится только в проекте пользовательского интерфейса для проекта BLL?

Вот код:

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)
                    {
                    }
                }                                        
            }
        }                
    }
}

В выходных данных диагностики есть только предупреждения для семантической модели.

enter image description here

1 Ответ

0 голосов
/ 24 сентября 2018

Таким образом, проблема была связана с неправильной загрузкой рабочей области из-за проблем с правильной версией msbuild. Странные ошибки диагностики, предопределенный тип Система ... не определен или не импортирован

...