有谁知道如何检索解决方案中的所有可用类型(语义)?从多个项目中创建汇编很容易。
MSBuildWorkspace workspace = MSBuildWorkspace.Create();
var solution = await workspace.OpenSolutionAsync(solutionPath, cancellationToken);
var compilations = await Task.WhenAll(solution.Projects.Select(x => x.GetCompilationAsync(cancellationToken)));
Run Code Online (Sandbox Code Playgroud)
仅迭代所有ClassDeclarations对我来说是不够的,因为我想要所有类型以及它们之间的连接。
foreach (var tree in compilation.SyntaxTrees)
{
var source = tree.GetRoot(cancellationToken).DescendantNodes();
var classDeclarations = source.OfType<ClassDeclarationSyntax>();
}
Run Code Online (Sandbox Code Playgroud)