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