2017-01-15 20 views
2

Мне интересно, можно ли получить доступ к C# AST (абстрактное дерево синтаксиса), используемому компилятором C# во время сборки напрямую? Я знаю, что могу получить AST для данного проекта, используя API Roslyn, но для этого потребуется перечитывать и переписывать исходный код, насколько я понимаю.Есть ли способ извлечь выгоду из AST-дистрибутора Roslyn C#?

Идея состоит в том, чтобы улучшить пользовательскую задачу MSBuild (в настоящее время использующую Visual Studio 2017, ядро ​​dotnet), используемую для анализа некоторых свойств полученной программы.

Чтобы ускорить процесс, было бы здорово как-то подключиться к компилятору или хотя бы получить доступ к кэшированным данным.

Не требуется модификация AST, поэтому это касается только доступа только для чтения.

+2

Вы должны написать анализатор. – SLaks

+0

Не могли бы вы уточнить, пожалуйста? Будет ли эта польза от любых кешей? – Fionn

+1

Анализаторы выполняются как часть процесса компиляции, используя ту же AST & семантическую модель. – SLaks

ответ

1

Да, если вы хотите проанализировать деревья, у нас есть целая функция для этого. Documentation is here.