我正在写一个DiagnosticAnalyzer
,并为SyntaxNode
注册SyntaxKind.Attribute
动作。该属性为项目中的其他文件命名。
例如,被分析的代码可以包括
[RelatedFile("otherFileName.foo")]
interface Whatever {...}
在我的分析回调中,我希望能够从正在分析的项目的角度访问相关文件的内容。所以,我需要:
SyntaxNode
中提取文件名。我可以做这个。我陷入了步骤(2)和(3)。 (是的,我可能不会严格要求做第2步,但我仍然想知道如何。)
从SyntaxNodeAnalysisContext
参数,我可以得到Workspace
对象,从那个Solution
对象,以及从那个Project
对象的集合。但我没有看到一种方法将特定的SyntaxNode
与Project
或Document
联系起来。
任何关于如何做到这一点的想法将不胜感激。
我找到了:
Workspace workspace = ...;
SyntaxNode node = ...;
Document document = workspace.Solution.GetDocument(node.SyntaxTree);
Project project = document.Project;
我不知道为什么我之前没有看到。