首页 > 解决方案 > Roslyn msWorkspace.OpenSolutionAsync() 不打开网站项目

问题描述

我有一个名为RoslynTesting.sln的解决方案有 2 个项目(类库和一个网站

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

msWorkspace.OpenSolutionAsync()只获取类库项目而不是网站项目。我可以在“[Failure] Project file not found: 'E:\RoslynTesting\WebSite1\'”msWorkspace.Diagnostics中看到一条消息

我是否遗漏了什么或 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);

标签: asp.netroslyn-code-analysis

解决方案


推荐阅读