Roslyn msWorkspace.OpenSolutionAsync () не открывает проекты веб-сайтов - PullRequest
0 голосов
/ 10 октября 2018

У меня есть решение с именем RoslynTesting.sln имеет 2 проекта ( библиотека классов и веб-сайт )

var msWorkspace = MSBuildWorkspace.Create();
var solution = await msWorkspace.OpenSolutionAsync(@"E:\RoslynTesting\RoslynTesting.sln");

msWorkspace.OpenSolutionAsync() получает только библиотеку классовпроект, а не сайт проекта.Я мог видеть сообщение в msWorkspace.Diagnostics, например "Файл проекта [Failure] не найден: 'E: \ RoslynTesting \ WebSite1 \'"

Я что-то упустил или Microsoft.CodeAnalysis.CSharp.Workspaces.dll не поддерживает проекты веб-сайтов?

Код для поиска объявления свойства и ссылок:

var msWorkspace = MSBuildWorkspace.Create()
var solution = await msWorkspace.OpenSolutionAsync(@"E:\RoslynTesting\RoslynTesting.sln");
var documents = solution.Projects.SelectMany(x => x.Documents).ToList();
var classFile = documents.Where(x => x.FilePath == filePath).FirstOrDefault();
var invocation = await classFile.GetSyntaxRootAsync();
var classNode = invocation.DescendantNodes().OfType<ClassDeclarationSyntax>().Where(x => x.Identifier.Text == className).FirstOrDefault();
var propertyDeclarationNode = classNode.DescendantNodes().OfType<PropertyDeclarationSyntax>().Where(x => x.Identifier.Text == propertyName).FirstOrDefault();           
var model = await classFile.GetSemanticModelAsync();
ISymbol methodSymbol = model.GetDeclaredSymbol(propertyDeclarationNode);
var propertyReferences = await SymbolFinder.FindReferencesAsync(methodSymbol, solution);
...