Я внедряю анализатор 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"]