Generazione di codice e modelli di testo T4

In Visual Studio un modello di testo T4 è una combinazione di blocchi di testo e logica di controllo che possono generare un file di testo. La logica di controllo viene scritta come frammenti di codice del programma in Visual C# o Visual Basic. È possibile usare le funzionalità C# versione 6.0 nelle direttive dei modelli T4. Il file generato può essere testo, ad esempio una pagina Web o un file di risorse, o codice sorgente del programma in qualsiasi lingua.

Per un linguaggio specifico del dominio(DSL), progettato per esprimere istruzioni in uno spazio di problemi specifico, informazioni su come generare codice da un linguaggio specifico del dominio

Esistono due tipi di modelli di testo T4: fase di esecuzione e fase di progettazione

Modelli di testo T4 di runtime

I modelli di runtime sono noti anche come modelli pre-elaborati. I modelli nell'applicazione vengono eseguiti per produrre stringhe di testo, come parte dell'output. Ad esempio, è possibile creare un modello per definire una pagina HTML:

<html><body>
 The date and time now is: <#= DateTime.Now #>
</body></html>

Si noti che il modello è simile all'output generato. La somiglianza del modello all'output risultante consente di evitare errori quando lo si vuole modificare.

Inoltre, il modello contiene frammenti di codice programma. È possibile usare questi frammenti per ripetere sezioni di testo, creare sezioni condizionali e visualizzare dati dell'applicazione.

Per generare l'output, l'applicazione chiama una funzione che viene generata dal modello. Ad esempio:

string webResponseText = new MyTemplate().TransformText();

L'applicazione può essere eseguita in un computer in cui non è installato Visual Studio.

Per creare un modello in fase di esecuzione, aggiungere un file di modello di testo pre-elaborato al progetto. È anche possibile aggiungere un file di testo normale e impostarne la proprietà Custom Tool su TextTemplatingFilePreprocessor.

Per altre informazioni, vedere Generazione di testo in fase di esecuzione con modelli di testo T4. Per altre informazioni sulla sintassi dei modelli, vedere Scrittura di un modello di testo T4.

Modelli di testo T4 in fase di progettazione

I modelli di fase di progettazione definiscono parte del codice sorgente e altre risorse dell'applicazione. In genere, si usano diversi modelli che leggono i dati in un singolo file di input o database e generano alcuni dei file con estensione cs, vb o altri file di origine. Ogni modello genera un file e viene compilato in Visual Studio o MSBuild.

I dati di input potrebbero ad esempio essere un file XML di dati di configurazione. Ogni volta che si modifica il file XML durante lo sviluppo, i modelli di testo rigenerano parte del codice dell'applicazione. Uno dei modelli potrebbe essere simile all'esempio seguente:

<#@ output extension=".cs" #>
<#@ assembly name="System.Xml" #>
<#
 System.Xml.XmlDocument configurationData = ...; // Read a data file here.
#>
namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #>
{
  ... // More code here.
}

Il file con estensione cs generato è nel formato seguente in base ai valori del file XML:

namespace Fabrikam.FirstJob
{
  ... // More code here.
}

Facendo un altro esempio, l'input potrebbe essere un diagramma di flusso di lavoro in un'attività aziendale. Quando gli utenti modificano il flusso di lavoro aziendale o quando si inizia a lavorare con nuovi utenti che hanno un flusso di lavoro diverso, è facile rigenerare il codice per adattarsi al nuovo modello.

Nota

Il termine modello talvolta viene usato per descrivere i dati letti da uno o più modelli. Il modello può avere qualsiasi formato, in qualsiasi tipo di file o database. Non deve essere un modello UML o un modello di linguaggio specifico di dominio. "Modello" indica semplicemente che i dati possono essere definiti in termini di concetti aziendali, invece di essere simili al codice. I modelli in fase di progettazione sono più rapidi e affidabili quando si modifica la configurazione man mano che cambiano i requisiti. In genere, l'input viene definito in termini di requisiti aziendali, come nell'esempio del flusso di lavoro. I modelli in fase di progettazione sono strumenti utili in un processo di sviluppo agile.

Per creare un modello in fase di progettazione, aggiungere un file di modello di testo al progetto. In alternativa, è possibile aggiungere un file di testo normale e impostare la relativa proprietà Strumento personalizzato su TextTemplatingFileGenerator.

Per altre informazioni, vedere Generazione di codice in fase di progettazione tramite modelli di testo T4. Per altre informazioni sulla sintassi dei modelli, vedere Scrittura di un modello di testo T4.

La funzionalità di trasformazione del modello di testo è denominata T4.

Vedi anche