SymbolFinder.FindReferencesAsyn c не возвращает все результаты? - PullRequest
0 голосов
/ 09 февраля 2020

Я пишу инструмент для поиска внутренних решений. Для этой цели я использую SymbolFinder.FindCallersAsyn c, а для нахождения классов он работает как шарм. Но когда я начал поиск вызовов методов, я не получил все результаты.

Так, например, когда в проекте AI есть метод класса X, а метод Add (), когда я использую этот метод в проекте A, все ссылки могут быть найденным. Но когда я добавляю ссылку на проект A на проект B (внутри того же решения), а затем использую метод Add (), ссылки не обнаруживаются. Когда я ищу ссылки класса X, все работает. Все тестовые проекты A и B компилируются в VS. Псевдокод, который я использую, выглядит следующим образом:

var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(solutionPath).Result;
var project = solution.Projects.FirstOrDefault(p => p.Name == “ProjectName”);
var compilation = await project.GetCompilationAsync();
var containingTypeSymbol = compilation.GetTypeByMetadataName(“TypeName”);
var searchedSymbol = containingTypeSymbol.GetMembers().FirstOrDefault(x => x.Name == “MethodName”);
var results = await SymbolFinder.FindReferencesAsync(searchedSymbol, solution);

Полный пример можно найти здесь: https://github.com/bigdnf/DependencyFinder/blob/master/SymbolFinder/SourceFinder/SourceFinder/Program.cs Консольное приложение получает только ссылки на класс Svalve, но родительские вызовы отсутствуют в списке результатов?

...