Visual Studio include un motore di generazione che permette di creare qualsiasi tipo di file partendo da una qualsiasi sorgente dati. Questo motore si chiama Text Template Transformtion Toolkit (T4). Questo motore prende in input un file con estensione .tt all'interno del quale mischiamo codice di markup con codice C# (un po come facciamo con Razor) per ottenere uno o più file ocme output finale.
Alcuni prodotti utilizzano già il motore T4 e il più famoso è sicuramente Entity Framework. Quando creiamo un modello, il modello è in realtà un file xml con estensione .edmx. Oltre a questo file ci sono anche due file .tt che leggono il file .edmx e generano il contesto e le classi C# del modello. Un'altro strumento che utilizza il motore T4 è T4MVC che semplifica la creazione deli url e molto altro in ASP.NET MVC.
Volendo possiamo anche noi utilizzare il motore T4. Nel prossimo script vediamo come creare al volo una pagina HTML.
<#@ output extension=".html" #> <html><body> The date and time now is: <#= DateTime.Now #> </body></html>
Come delimitatori tra codice eseguito dal motore e codice di markup si usano i caratteri <# e #>. Se si usa il carattere @ dopo il delimitatore iniziale, si specifica una direttiva per il motore. In questo esempio, la direttiva output specifica l'estensione del file generato.Se invece si usa il carattere = si stampa il valore nell'output finale.
Una volta generato questo file, basta salvarlo o cliccare col tasto destro in Visual Studio e fare Run Custom Tool per lanciarne l'esecuzione. Il risultato di output è il seguente.
<html><body> The date and time now is: 02/23/2018 01:07:35 </body></html>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Creare gruppi di client per Event Grid MQTT
Usare il versioning con i controller di ASP.NET Core Web API
Gestire liste di tipi semplici con Entity Framework Core
Potenziare Azure AI Search con la ricerca vettoriale
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
Utilizzare politiche di resiliency con Azure Container App
Utilizzare i primary constructor di C# per inizializzare le proprietà
C# 12: Cosa c'è di nuovo e interessante
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Limitare le richieste lato server con l'interactive routing di Blazor 8