Geração de código e modelos de texto T4

No Visual Studio, um modelo de texto T4 é uma combinação de blocos de texto e lógica de controle que pode gerar um arquivo de texto. A lógica de controle é escrita como fragmentos do código do programa no Visual C# ou no Visual Basic. Você pode usar recursos do C# versão 6.0 em diretivas de modelos T4. O arquivo gerado pode ser texto, como uma página da Web ou um arquivo de recurso ou código-fonte do programa em qualquer idioma.

Para uma DSL (linguagem específica de domínio), projetada para expressar instruções em um espaço de problema específico, saiba como Gerar código de uma linguagem Domain-Specific

Há dois tipos de modelos de texto T4: tempo de execução e tempo de design

Modelos de texto T4 em tempo de execução

Os modelos de tempo de execução também são conhecidos como modelos 'pré-processados'. Você executa os modelos em seu aplicativo para produzir cadeias de caracteres de texto, como parte de sua saída. Por exemplo, você pode criar um modelo para definir uma página HTML:

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

Observe que o modelo se assemelha à saída gerada. A similaridade do modelo com a saída resultante ajuda a evitar erros quando você deseja alterá-lo.

Além disso, o modelo contém fragmentos do código do programa. Você pode usar esses fragmentos para repetir seções de texto, fazer seções condicionais e mostrar dados do seu aplicativo.

Para gerar a saída, o aplicativo chama uma função gerada pelo modelo. Por exemplo:

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

Seu aplicativo pode ser executado em um computador que não tenha o Visual Studio instalado.

Para criar um modelo de tempo de execução, adicione um arquivo de modelo de texto pré-processado ao seu projeto. Você também pode adicionar um arquivo de texto sem formatação e definir sua propriedade Ferramenta Personalizada como TextTemplatingFilePreprocessor.

Para obter mais informações, confira Geração de texto em tempo de execução com modelos de texto T4. Para obter mais informações sobre a sintaxe dos modelos, consulte Escrevendo um modelo de texto T4.

Design de texto T4 de tempo de design

Modelos de tempo de design definem parte do código-fonte e outros recursos do seu aplicativo. Normalmente, você usa vários modelos que leem os dados em um único arquivo de entrada ou banco de dados e geram alguns de seus arquivos .cs, .vb ou outros arquivos de origem. Cada modelo gera um arquivo e é criado no Visual Studio ou no MSBuild.

Por exemplo, seus dados de entrada podem ser um arquivo XML de dados de configuração. Sempre que você edita o arquivo XML durante o desenvolvimento, os modelos de texto regeneram parte do código do aplicativo. Um dos modelos pode ser semelhante ao exemplo a seguir:

<#@ 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.
}

O arquivo .cs gerado está no seguinte formato com base nos valores de arquivo XML:

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

Como outro exemplo, a entrada pode ser um diagrama de fluxo de trabalho em uma atividade de negócios. Quando os usuários alteram o fluxo de trabalho de negócios ou quando você começa a trabalhar com novos usuários que têm um fluxo de trabalho diferente, é fácil regenerar o código para se ajustar ao novo modelo.

Observação

Às vezes, o termo modelo é usado para descrever dados lidos por um ou mais modelos. O modelo pode estar em qualquer formato, tipo de arquivo ou banco de dados. Ele não precisa ser um modelo UML ou modelo DSL. 'Modelo' apenas indica que os dados podem ser definidos em termos de conceitos de negócios, em vez de se assemelharem ao código. Os modelos de tempo de design são mais rápidos e confiáveis ao alterar a configuração à medida que os requisitos mudam. Normalmente, a entrada é definida em termos de requisitos de negócios, como no exemplo de fluxo de trabalho. Modelos de tempo de design são ferramentas úteis em um processo de desenvolvimento ágil.

Para criar um modelo de tempo de design, adicione um arquivo Modelo de Texto ao seu projeto. Como opção, você pode adicionar um arquivo de texto sem formatação e definir sua propriedade Ferramenta Personalizada como TextTemplatingFilePreprocessor.

Para saber mais, confira Geração de código em tempo de design usando modelos de texto T4. Para obter mais informações sobre a sintaxe dos modelos, consulte Escrevendo um modelo de texto T4.

O recurso de transformação de modelo de texto é denominado T4.

Confira também