我可以从Roslyn分析器分析上下文中获取项目路径或属性吗?

时间:2019-04-24 17:34:27

标签: c# roslyn

我正在实现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版本那样:

  • 找到csproj的路径
  • 从csproj获取属性

这可能吗?理想情况下,我会在道德上寻找

AnalysisContext.Project.Properties["MyCustomProp"]

0 个答案:

没有答案