Могу ли я получить путь к проекту или свойства из контекста анализа Roslyn? - PullRequest
2 голосов
/ 24 апреля 2019

Я внедряю анализатор Roslyn и хочу предпринять другие действия в зависимости от того, как некоторые свойства установлены в csproj.

В настоящее время я выполняю это, устанавливая узел «AdditionalFiles» в файле props, импортированном с анализатором.Это указывает на .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);
            }
        }

Мне сказали, что может быть первоклассный поддерживаемый способчтобы выполнить одно или оба из этих действий, не требуя при этом каких-то хакерских версий:

  • Найдите путь к csproj
  • Получите свойства из csproj

Возможно ли это?В идеале я бы искал моральный эквивалент

AnalysisContext.Project.Properties["MyCustomProp"]
...