Ho creato il sorgente Roslyn come described here.Passaggio del compilatore C# di Roslyn
vorrei aggiungere un punto di interruzione nel compilatore C# e scorrere la compliation di questo semplice programma:
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var result = 1 + 2;
Console.WriteLine(result);
}
}
}
Dove devo impostare un punto di interruzione? Dovrebbe essere all'inizio del processo di compilazione come mi piacerebbe passare attraverso l'analisi e persino lexing.
Se si imposta CompilerExtension come progetto di avvio e si preme F5 (Avvia debug), viene lanciata una copia di Visual Studio con il compilatore appena compilato. Mi piacerebbe evitare di dover avviare una nuova istanza di Visual Studio ogni volta che mi piacerebbe passare attraverso il compilatore. Qual è un buon modo per impostare un piccolo programma che invochi direttamente il codice del compilatore sulla sorgente di cui sopra?
È possibile aggiungere un nuovo progetto alla soluzione Roslyn, aggiungere riferimenti ai progetti Microsoft.CodeAnalysis corretti e quindi chiamare 'CSharpSyntaxTree.ParseText()' e 'Compilation.Emit()'. Quindi potresti passare attraverso il codice di analisi o di emissione che ti interessa. – JoshVarty
Grazie Josh! Ho aggiunto una risposta che dimostra 'ParseText'. @JoshVarty – dharmatech
Ho scritto un articolo sul blog in qualche modo basato su ciò che @JoshVarty suggerisce qui e in uno dei suoi articoli sul blog. Questo può essere di interesse per chiunque voglia giocare con gli interni di Roslyn. https://renniestechblog.com/information/33-modifying-roslyn-step-1-initial-test – RenniePet