Generatori di sorgenti C # per migliorare le prestazioni in .NET 5

Microsoft ha introdotto un'anteprima di una funzionalità del compilatore C # denominata Source Generators che può ispezionare un programma e generare file di origine che possono essere aggiunti a una compilation. Microsoft afferma che Source Generators può migliorare le prestazioni in una serie di scenari.

Introdotto il 29 aprile, un generatore di sorgenti è un pezzo di codice (un assembly .NET Standard 2.0) che viene eseguito durante la compilazione e può ispezionare un programma per produrre file aggiuntivi che vengono compilati insieme al resto del codice.

I generatori di origine consentono agli sviluppatori C # di eseguire le operazioni seguenti:

  • Recupera una compilation che rappresenta tutto il codice utente in fase di compilazione. Questo oggetto può essere ispezionato e gli sviluppatori possono scrivere codice che funziona con la sintassi ei modelli semantici per il codice da compilare, come con gli analizzatori.
  • Genera file sorgente C # da aggiungere a un oggetto di compilazione durante la compilazione, con codice sorgente aggiuntivo fornito come input durante la compilazione del codice.

Microsoft ha affermato che il codice utente può essere ispezionato insieme a ricchi metadati che il compilatore crea durante la compilazione, con il codice C # emesso nuovamente nella stessa compilazione in base ai dati analizzati. I generatori di origine sono simili agli analizzatori di Roslyn che ispezionano il codice C # o Visual Basic, fungendo da analizzatori che possono emettere codice sorgente C #.  

Source Generators verrà distribuito come parte di C # 9. L'azienda ha reso disponibili un libro di ricette di Source Generators e un documento di progettazione di Source Generators per aiutare gli sviluppatori a iniziare.

Gli scenari che traggono vantaggio dai Generatori di sorgenti includono:

  • Per eseguire la riflessione in fase di esecuzione. Analizzando il codice all'avvio di un'app, ad esempio, potrebbe verificarsi una fase di rilevamento del controller in fase di compilazione, con tempi di avvio più rapidi.
  • Per evitare l'uso di API "tipizzate in modo stringente", come il funzionamento del routing ASP.NET Core tra i controller e le pagine Razor. Il routing potrebbe essere fortemente tipizzato e le stringhe necessarie generate come dettaglio in fase di compilazione.
  • Per aiutare a rimuovere le barriere all'ottimizzazione della compilazione basata sul linker e anticipata.

Per accedere a Source Generators, gli sviluppatori devono installare l'ultima anteprima .NET 5 e l'ultima anteprima di Visual Studio.