Compartir a través de


Directiva Include T4

En una plantilla de texto de Visual Studio, puede incluir texto de otro archivo utilizando una directiva <#@include#>.Puede colocar directivas include en cualquier parte de una plantilla de texto antes del primer bloque de características de clase <#+ ... #>.Los archivos incluidos también pueden contener directivas include, así como otras directivas.Esto le permite compartir código de plantilla y texto reutilizable entre plantillas.

Usar directivas include

<#@ include file="filePath" #>
  • filePath pueden se absoluto o relativo al archivo de plantilla actual.

    Además, las extensiones concretas de Visual Studio pueden especificar sus propios directorios para buscar archivos de inclusión.Por ejemplo, cuando se han instalado el SDK de modelado (herramientas de DSL) y visualización, la siguiente carpeta se agrega a la lista de inclusión: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\11.0\TextTemplates.

    Estas carpetas de inclusión adicionales podrían depender de la extensión de archivo del archivo para incluir.Por ejemplo, la carpeta de inclusión de las Herramientas ADSL solo es accesible para la inclusión de archivos que tienen la extensión de archivo .tt

  • filePath pueden incluir variables de entorno delimitadas con "%."Por ejemplo:

    <#@ include file="%HOMEPATH%\MyIncludeFile.t4" #>
    
  • El nombre de un archivo incluido no debe utilizar la extensión ".tt".

    Es posible que desee utilizar otra extensión, como ".t4" de archivos incluidos.Esto es porque, al agregar un archivo .tt a un proyecto, Visual Studio establece automáticamente su propiedad Herramienta personalizada en TextTemplatingFileGenerator.Normalmente no desea que los archivos incluidos se transformen individualmente.

    Por otra parte, debe tener en cuenta que en algunos casos, la extensión de archivo afecta a las carpetas adicionales que se buscarán para archivos de inclusión.Esto podría ser importante al tener un archivo incluido que incluye otros archivos.

  • El contenido incluido se procesa casi como si formase parte de la plantilla de texto que lo incluye.Sin embargo, puede incluir un archivo que contenga un bloque de características de clase <#+...#> aunque la directiva include vaya seguida de texto normal y bloques de control estándar.

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).
<#+
}
#>

El archivo generado resultante, 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).