T4 Diretiva de inclusão
Em um modelo de texto em Visual Studio, você pode incluir texto de outro arquivo usando um <#@include#> diretiva.Você pode colocar include diretivas em qualquer lugar em um modelo de texto antes do bloco de recurso de primeira classe <#+ ... #>.Também podem conter arquivos incluídos include diretivas e outras diretivas.Isso permite que você compartilhe o texto do modelo de código e clichê entre modelos.
Usando diretivas de inclusão
<#@ include file="filePath" #>
filePathpode ser absoluto ou relativo para o arquivo de modelo atual.
Além disso, específico Visual Studio extensões podem especificar seus próprios diretórios para procurar por arquivos de inclusão.Por exemplo, quando você tiver instalado a visualização e modelagem SDK (ferramentas DSL), a seguinte pasta é adicionada à lista de inclusão: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\11.0\TextTemplates.
Esses adicionais incluem pastas pode depender a extensão do arquivo.Por exemplo, as ferramentas de DSL incluem pasta só é acessível incluindo arquivos que têm a extensão de arquivo.tt
filePathpode incluir variáveis de ambiente delimitadas por "%".Por exemplo:
<#@ include file="%HOMEPATH%\MyIncludeFile.t4" #>
Não tem o nome de um arquivo incluído usar a extensão ".tt".
Convém usar outra extensão, como ".t4" de arquivos incluídos.Isso ocorre porque, quando você adiciona um .tt arquivo de projeto, Visual Studio define automaticamente seus Ferramenta personalizada propriedade TextTemplatingFileGenerator.Você normalmente não deseja arquivos incluídos para ser transformada individualmente.
Por outro lado, você deve estar ciente de que em alguns casos, a extensão de arquivo afeta as pastas adicionais serão pesquisadas para incluir arquivos.Isso pode ser importante quando você tem um arquivo incluído que inclui outros arquivos.
Conteúdo incluído é processado como se fosse parte do modelo de texto incluindo.No entanto, você pode incluir um arquivo que contém um bloco de recurso de classe <#+...#> mesmo se o include diretiva é seguida de blocos de controle padrão e texto comum.
MyTextTemplate.tt:
<#@ output extension=".txt" #>
Output message 1 (from top template).
<#@ include file="TextFile1.t4"#>
Output message 5 (from top template).
<#
GenerateMessage(6); // defined in TextFile1.t4
AnotherGenerateMessage(7); // defined in TextFile2.t4
#>
TextFile1.t4:
Output Message 2 (from included file).
<#@include file="TextFile2.t4" #>
Output Message 4 (from included file).
<#+ // Start of class feature control block.
void GenerateMessage(int n)
{
#>
Output Message <#= n #> (from GenerateMessage method).
<#+
}
#>
TextFile2.t4:
Output Message 3 (from included file 2).
<#+ // Start of class feature control block.
void AnotherGenerateMessage(int n)
{
#>
Output Message <#= n #> (from AnotherGenerateMessage method).
<#+
}
#>
O resultante gerou o arquivo, MyTextTemplate.txt:
Output message 1 (from top template).
Output Message 2 (from included file).
Output Message 3 (from included file 2).
Output Message 4 (from included file).
Output message 5 (from top template).
Output Message 6 (from GenerateMessage method).
Output Message 7 (from AnotherGenerateMessage method).