T4 Diretiva de inclusão
Em um modelo de texto em Visual Studio, você pode incluir o 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 primeira classe do recurso <#+ ... #>. Arquivos incluídos também podem conter 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 ao arquivo de modelo atual.
Além disso, específico Visual Studio extensões podem especificar seus próprios diretórios para procurar incluem arquivos. Por exemplo, quando você tiver instalado o SDK de modelagem (ferramentas de DSL) e a visualização, a seguinte pasta é adicionada à lista de inclusão: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\10.0\TextTemplates.
Esses adicionais incluem pastas pode depender da extensão de arquivo do arquivo. Por exemplo, as ferramentas DSL incluir pasta só está acessível para incluindo arquivos que têm a extensão de arquivo.tt
filePathpode incluir variáveis de ambiente delimitadas com "%". Por exemplo:
<#@ include file="%HOMEPATH%\MyIncludeFile.t4" #>
Não tem o nome de um arquivo incluído usar a extensão".tt".
Talvez você queira usar outra extensão, como ".t4" para arquivos incluídos. Isso ocorre porque, quando você adiciona um .tt o arquivo a um projeto, Visual Studio define automaticamente seus Ferramenta personalizada propriedade para TextTemplatingFileGenerator. Você geralmente 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 quais pastas adicionais serão pesquisadas por arquivos de inclusão. Isso pode ser importante quando você tem um arquivo incluído que inclui outros arquivos.
O 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 pelo texto comum e de controle padrão blocos.
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).
<#+
}
#>
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).
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Março de 2011 |
Dividir o tópico do pai. |
Aprimoramento de informações. |