我正在实现Roslyn分析器,并且我想根据csproj中某些属性的设置采取不同的操作。
当前,我通过在与分析器一起导入的props文件中设置“ AdditionalFiles”节点来完成此操作。这指向.csproj,然后我手动对项目文件进行xml解析,以查找我关心的属性。
<ItemGroup>
<AdditionalFiles Include="$(ProjectPath)" />
</ItemGroup>
private void AnalyzeAdditionalFiles(CompilationStartAnalysisContext context)
{
ICompilationStartAnalysisContextWrapper wrappedContext = this.compilationStartAnalysisContextWrapperFactory.Create(context);
if (wrappedContext.GetAdditionalTexts()
.Any(addtionalFile => <xml parse and validate csproj>))
{
context.RegisterSyntaxNodeAction(this.AnalyzeSyntaxNode, PossibleSyntaxKinds);
}
}
有人告诉我,可能有一种一流的支持方法可以执行这些操作中的一个或两个,而无需像hacky版本那样:
这可能吗?理想情况下,我会在道德上寻找
AnalysisContext.Project.Properties["MyCustomProp"]