Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 2796|Risposta: 2

[Fonte] Piattaforma compilatrice .NET/C# Roslyn

[Copiato link]
Pubblicato su 10/03/2024 10:58:32 | | | |
Compilatore: Un compilatore è un programma che converte il codice sorgente (linguaggio originale) scritto in un linguaggio di programmazione in un altro (linguaggio di destinazione). La compilazione è il processo di traduzione dal codice sorgente (di solito un linguaggio di alto livello) a codice oggetto (di solito un linguaggio di basso livello o linguaggio macchina) che può essere eseguito direttamente da un computer o da una macchina virtuale.

Nella piattaforma .NET, ci sono due diversi compilatori in diverse fasi di esecuzione del modello: uno chiamato compilatore Roslyn, che compila codice C# e VB in assembly; L'altro è chiamato compilatore RyuJIT, che compila il codice IL (linguaggio intermedio) nell'assembly in codice macchina.

Questo articolo inizia con il compilatore Roslyn. Non dobbiamo approfondire come funziona, ma capire come funziona, sapere a cosa può essere usato.

Inizialmente, il compilatore del linguaggio C# era scritto in C++, e successivamente Microsoft introdusse un nuovo compilatore scritto direttamente in C#: Roslyn, che è un compilatore bootstrap.

Il compilatore bootstrap significa che il compilatore di un determinato linguaggio di programmazione è scritto direttamente nel linguaggio. Ogni versione del compilatore bootstrap è compilata con una versione precedente, ma la sua prima versione deve essere compilata da un compilatore scritto in un altro linguaggio, come la prima versione di Roslyn compilata da un compilatore scritto in C++. Molti linguaggi di programmazione maturano e scrivono i propri compilatori utilizzando il linguaggio stesso, come C# e Go.

Sulla piattaforma .NET, il compilatore Roslyn è responsabile della compilazione del codice C# e VB in assembly.

La maggior parte dei compilatori tradizionali esistenti sono pattern "black box" che convertono il codice sorgente in eseguibili o file di libreria, e non abbiamo modo di sapere cosa succede nel mezzo. A differenza di Roslyn, Roslyn permette di accedere a ogni fase del processo di compilazione del codice tramite API.

Il suo meccanismo di funzionamento è basato su pipeline, con quattro stadi, ciascuno dei quali è un modulo indipendente, e ogni modulo fornisce una corrispondente API. Gli ambienti di sviluppo integrati (IDE) possono sfruttare queste API per fornire strumenti comodi per migliorare l'efficienza dello sviluppo, come l'evidenziazione del codice, suggerimenti intelligenti, strumenti di rifattorizzazione, strumenti di analisi delle prestazioni e altro ancora. Inoltre, con Roslyn, gli sviluppatori possono utilizzare il compilatore come servizio nei propri programmi.

Sfrutta le API fornite da Roslyn per generare dinamicamente campioni di codice

Per prima cosa, crea una nuova libreria ClassLibraryGenerator e crea un progetto di libreria standard .NET che prenda di mira il nome framework target netstandard2.0 (TFM). Aggiungendo i pacchetti NuGet Microsoft.CodeAnalysis.Analyzers e Microsoft.CodeAnalysis.CSharp, csproj è configurato come segue:


Crea un nuovo file C# chiamato TestSourceGenerator.cs che specifichi il tuo generatore di sorgente come segue:

Dall'oggetto di contesto, possiamo accedere al punto di ingresso compilato o al metodo Main. Un'istanza mainMethod è un IMethodSymbol che rappresenta il simbolo di un metodo o di un metodo simile (inclusi costruttori, distruttori, operatori o accessori attributi/eventi). Il metodo Microsoft.CodeAnalysis.Compilation.GetEntryPoint restituisce l'IMethodSymbol del punto di ingresso del programma. Altri metodi ti permettono di trovare qualsiasi simbolo di metodo nel tuo progetto. In questo oggetto, possiamo dedurre lo spazio dei nomi (se esiste) e il tipo che contiene. La sorgente in questo esempio è una stringa interpolata che modella il codice sorgente da generare, con le lacune interpolate che popolano lo spazio dei nomi e le informazioni di tipo contenute. Aggiungi la fonte al contesto con il nome del prompt. Per questo esempio, il builder crea un nuovo file sorgente di build che contiene l'implementazione del metodo parziale nell'applicazione console. Un generatore di sorgenti può essere scritto per aggiungere qualsiasi fonte preferita.

Crea una nuova app console ConsoleApp4 (senza istruzioni di alto livello) con il seguente codice:

Allo stesso tempo, aggiungi il riferimento al progetto ClassLibraryGenerator, come segue:

Prova ad avviare l'app console con l'output che segue:



In Visual Studio, clicca sul progetto "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", fai doppio clic sul file "Program.g.cs" per vedere il codice generato, come segue:



Sollecito:Modificare il codice del builder potrebbe richiedere un riavvio di Visual Studio per vederlo

Indirizzo GitHub di Roslyn:Il login del link ipertestuale è visibile.

Riferimento:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.




Precedente:Esecuzione del codice in Visual Studio utilizzando la finestra C# Interactive
Prossimo:Download del file immagine ISO originale di Windows 11
 Padrone di casa| Pubblicato su 10/03/2024 10:59:12 |
Introduzione e differenza tra compilazione JIT e AOT in .NET
https://www.itsvse.com/thread-10734-1-1.html
 Padrone di casa| Pubblicato su 06/07/2024 16:59:59 |
Usa Roslyn per compilare dinamicamente codice C# ed eseguirlo
https://www.itsvse.com/thread-10786-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com