Я построил источник Roslyn как described here.Прохождение через компилятор Roslyn C#
Я хотел бы добавить контрольную точку в C# компилятор и пошагово compliation этой простой программы:
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var result = 1 + 2;
Console.WriteLine(result);
}
}
}
Где я должен установить точку останова? Это должно быть на раннем этапе процесса компиляции, поскольку я хотел бы пройти синтаксический анализ и даже лексирование.
Если я установил CompilerExtension в качестве проекта запуска и нажал F5 («Начать отладку»), будет запущена копия Visual Studio с запущенным недавно созданным компилятором. Я бы хотел, чтобы не запускать новый экземпляр Visual Studio каждый раз, когда я хотел бы пройти через компилятор. Каков хороший способ настроить небольшую программу, которая напрямую вызывает код компилятора в указанном выше источнике?
Вы можете добавить новый проект в решение Roslyn, добавить ссылки на правильные проекты Microsoft.CodeAnalysis и затем вызвать 'CSharpSyntaxTree.ParseText()' и 'Compilation.Emit()'. Затем вы можете выполнить любой синтаксический анализ или код, который вас интересует. – JoshVarty
Спасибо, Джош! Я добавил ответ, который демонстрирует «ParseText». @JoshVarty – dharmatech
Я написал статью в блоге, основанную на том, что @JoshVarty предлагает здесь и в одной из своих статей в блоге. Это может представлять интерес для тех, кто хочет поиграть с внутренними лицами Roslyn. https://renniestechblog.com/information/33-modification-roslyn-step-1-initial-test – RenniePet