Generazione di codice e modelli di testo T4

In Visual Studio, un modello di testo T4 costituisce una combinazione di blocchi di testo e logica di controllo in grado di generare un file di testo. La logica di controllo è scritta come frammenti di codice programma in Visual C# o Visual Basic. Il file generato può contenere testo di qualsiasi tipo, quale una pagina Web o un file di risorse o un codice sorgente del programma in qualsiasi linguaggio.

Sono disponibili due tipi di modelli di testo T4:

  • I modelli di testo T4 della fase di esecuzione (modelli 'pre-elaborati') vengono eseguiti nell'applicazione per produrre stringhe di testo, in genere 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 assomiglia all'output generato. La somiglianza del modello all'output risultante consente di evitare errori quando si desidera modificarlo.

    Il modello contiene inoltre frammenti di codice programma. È possibile utilizzare questi frammenti per ripetere le sezioni del testo, per creare sezioni condizionali, nonché per visualizzare i dati dall'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 su un computer su cui non è installato Visual Studio.

    Per creare un modello della fase di esecuzione, aggiungere un file Modello di testo pre-elaborato al progetto. In alternativa, è possibile aggiungere un file di testo e impostare la relativa proprietà Strumento personalizzato su TextTemplatingFilePreprocessor.

    Per ulteriori informazioni, vedere Generazione di testo in fase di esecuzione tramite modelli di testo T4 pre-elaborati. Per ulteriori informazioni sulla sintassi dei modelli, vedere Scrittura di un modello di testo T4.

  • I modelli di testo T4 della fase di progettazione vengono eseguiti in Visual Studio per definire parte del codice sorgente e le altre risorse dell'applicazione.
    Vengono in genere utilizzati diversi modelli in grado di leggere i dati in un singolo file di input o database e di generare alcuni dei file .cs, .vb o altri file di origine. Ogni modello genera un file. Vengono eseguiti all'interno di Visual Studio o MSBuild.

    Ad esempio, i dati di input potrebbero essere un file XML dei dati di configurazione. Ogni qualvolta si modifica il file XML durante lo sviluppo, i modelli di testo rigenereranno parte dei codice dell'applicazione. Uno dei modelli potrebbe assomigliare all'esempio seguente:

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

    A seconda dei valori contenuti nel file XML, il file .cs generato avrà un aspetto simile al seguente.

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

    Un altro esempio è rappresentato dal fatto che 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 dispongono di un flusso di lavoro diverso, è facile rigenerare il codice per adattarlo al nuovo modello.

    I modelli della fase di progettazione consentono di modificare la configurazione in modo più rapido e affidabile in caso di variazione dei requisiti. In genere l'input viene definito in base ai requisiti aziendali, come nell'esempio del flusso di lavoro. In questo modo diventa più semplice discutere le modifiche con gli utenti. I modelli della fase di progettazione costituiscono pertanto uno strumento utile in un processo di sviluppo Agile.

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

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

Nota

Il termine modello viene a volte utilizzato per descrivere i dati letti da uno o più modelli. Il modello può avere un formato qualsiasi, in qualsiasi tipo di file o database. Il modello non deve necessariamente essere un modello UML o un modello del Linguaggio specifico di dominio. ' "Modello" indica semplicemente che i dati possono essere definiti facendo riferimento ai concetti aziendali, piuttosto che in base alla somiglianza al codice.

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

Argomenti della sezione

Risorse

Nel Centro per sviluppatori T4 vengono raccolti esempi, suggerimenti e domande frequenti su T4.

Vedere anche

Concetti

Procedura: generare file da un modello UML

Altre risorse

Generazione di codice da un linguaggio specifico di dominio

Cronologia delle modifiche

Data

Cronologia

Motivo

Marzo 2011

Enfatizzare la differenza tra modelli della fase di esecuzione e modelli della fase di progettazione.

Commenti e suggerimenti dei clienti.