T4 Šablona směrnice
A Visual Studio text šablony T4 obvykle začíná template směrnice, která určuje zpracování šablony.Musí být více než jeden směrnice šablony v šabloně text a všechny soubory, které obsahuje.
Obecný přehled psaní textu šablony, viz Psaní textu šablony T4.
Použití směrnice šablony
<#@ template [language="VB"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>
template Směrnice má několik atributů, které umožňují zadat různé aspekty transformace.Všechny atributy jsou volitelné.
atribut compilerOptions
Příklad:
compilerOptions="optimize+"Platné hodnoty:
Možnosti kompilátoru platný.Další informace naleznete v tématu Možnosti C# kompilátoru uvedené podle kategorie a Možnosti kompilátoru Visual Basic podle kategorie.Pro spuštění (zpracovaných) šablony ignorováno.
Tyto možnosti platí, pokud šablona byla převedena do Visual C# nebo Visual Basic, a výsledný kód je zkompilován.
Atribut Culture
Příklad:
culture="de-CH"Platné hodnoty:
"", invariantní jazykovou verzi, což je výchozí.Kultura, vyjádřené jako řetězec ve formě xx-XX.Například en US, ja-JP, de-CH, de-DE.Další informace naleznete v tématu System.Globalization.CultureInfo.
Atribut culture specifikuje jazykovou při blok výraz je převedena na text.
Atribut Debug
Příklad:
debug="true"
Platné hodnoty:
true, false.Výchozí je false.
Pokud debug je atribut true, kód zprostředkujícího soubor bude obsahovat informace, které umožňují přesněji určit pozici v šabloně, kde došlo k přerušení nebo výjimky ladicí program.
Pro šablony návrhu bude zapsán kód zprostředkujícího soubor do adresáře % TEMP %.
Spustit ladicí program šablonu návrhu, v Průzkumníku řešení otevřete místní nabídku šablony text a zvolte Debug šablony T4.
atribut hostspecific
Příklad:
hostspecific="true"
Platné hodnoty:
true, false, trueFromBase.Výchozí je false.
Pokud nastavíte hodnotu tohoto atributu na true, vlastnost s názvem Host je přidána třída generovaný text šablony.Vlastnost je odkaz na hostitelský modul transformace a je deklarován jako Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost.Pokud jste definovali vlastní hostitele, můžete je přetypovat na typ vlastního hostitele.
Protože tato vlastnost typ závisí na typu hostitele, je pouze užitečné Pokud píšete text šablony, která funguje pouze pro určitého hostitele.
Při hostspecific je true a Visual Studio, můžete obsadit this.Host k IServiceProvider přístup k Visual Studio funkce.Můžete také použít Host.ResolvePath(filename) získat absolutní cesta souboru v projektu.Příklad:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".txt" #>
<#@ assembly name="EnvDTE" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="System.IO" #>
<# // Get the Visual Studio API as a service:
DTE dte = ((IServiceProvider)this.Host).GetCOMService(typeof(DTE)) as DTE;
#>
Number of projects in this solution: <#= dte.Solution.Projects.Count #>
<#
// Find a path within the current project:
string myFile = File.ReadAllText(this.Host.ResolvePath("MyFile.txt"));
#>
Content of myFile is:
<#= myFile #>
Pokud použijete inherits a hostspecific atributy společně určují hostitele = "trueFromBase" v odvozené třídě a host = "true" v základní třídě.Tím předejdete dvojité definice Host vlastnost do generovaného kódu.
atribut Language
Příklad:
language="VB"Platné hodnoty:
C#(výchozí)VB
Atribut language Určuje jazyk (Visual Basic nebo Visual C#) pro zdrojový kód v prohlášení a výraz bloky.Kód zprostředkujícího souboru, ze kterého výstup generovaný bude tento jazyk používat.Tento jazyk nesouvisí jazyk, že šablona generuje, což může být jakýkoliv druh textu.
Příklad:
<#@ template language="VB" #>
<#@ output extension=".txt" #>
Squares of numbers:
<#
Dim number As Integer
For number = 1 To 4
#>
Square of <#= number #> is <#= number * number #>
<#
Next number
#>
atributem Inherits
Můžete určit, že programový kód šablony může dědit z jiné třídy, které mohou být generovány z text šablony.
Dědičnost v běhu (zpracovaných) text šablony
Pomocí dědičnosti mezi spuštění text šablony vytvořit základní šablonu, která má několik variant odvozených.Spuštění šablony jsou ty, které jsou Vlastní nástroj vlastnost nastavena na TextTemplatingFilePreprocessor.Spuštění šablony vygeneruje kód, který můžete volat v aplikaci vytvořit text v šabloně definováno.Další informace naleznete v tématu Spuštění generování textu s T4 Text šablony.
Pokud nezadáte inherits atribut, základní třída a odvozená třída jsou generovány z text šablony.Při zadání inherits je generován atribut odvozené třídy.Základní třídy lze psát rukou, ale musí poskytovat metody, které jsou používány odvozené třídy.
Obvykle se zadat jinou šablonu zpracována jako základní třída.Základní šablona poskytuje běžné bloky textu, který může být Prokládaný text ze šablony odvozené.Můžete použít třídu funkce bloky <#+ ... #> definovat metody, které obsahují fragmenty textu.Například můžete umístit rámci výstupní text základní šablona poskytuje virtuální metody, které lze přepsat v šablonách odvozené:
Šablona (zpracovaných) text spuštění BaseTemplate.tt:
This is the common header. <# SpecificFragment1(); #> A common central text. <# SpecificFragment2(); #> This is the common footer. <#+ // Declare abstract methods protected virtual void SpecificFragment1() { } protected virtual void SpecificFragment2() { } #>
Šablona (zpracovaných) text spuštění DerivedTemplate1.tt:
<#@ template language="C#" inherits="BaseTemplate" #> <# // Run the base template: base.TransformText(); #> <#+ // Provide fragments specific to this derived template: protected override void SpecificFragment1() { #> Fragment 1 for DerivedTemplate1 <#+ } protected override void SpecificFragment2() { #> Fragment 2 for DerivedTemplate1 <#+ } #>
Kód aplikace vyvolat DerivedTemplate1:
Console.WriteLine(new DerivedTemplate().TransformText());
Výsledný výstup:
This is the common header. Fragment 1 for DerivedTemplate1 A common central text. Fragment 2 for DerivedTemplate1 This is the common footer.
Můžete vytvořit základní a odvozené třídy v různých projektech.Nezapomeňte přidat odkazy projekt odvozené základní projekt nebo sestavení.
Běžné třídy rukou můžete použít také jako základní třída.Základní třída musí poskytovat metody používané v odvozené třídě.
Upozornění |
---|
Pokud použijete inherits a hostspecific atributy společně určují hostspecific = "trueFromBase" v odvozené třídě a host = "true" v základní třídě.Tím předejdete dvojité definice Host vlastnost do generovaného kódu. |
Dědičnost v šabloně návrhu textu
Šablona návrhu textu je do souboru Vlastní nástroj je nastavena na TextTemplatingFileGenerator.Šablona generuje výstupní soubor kódu nebo textu, který je součástí vaší Visual Studio projektu.Generovat soubor výstupu, šablonu nejprve přeloženy do souboru kódu zprostředkující program, který obvykle nezobrazí.inherits Atribut určuje základní třídy pro tento zprostředkující kód.
Pro šablonu návrhu textu můžete zadat základní třídy, která je odvozena z Microsoft.VisualStudio.TextTemplating.TextTransformation.Použití <#@assembly#> směrnice načíst sestavení nebo projektu, který obsahuje základní třídy.
Další informace naleznete v "dědičnost v textu šablony" Gareth Jones blogu.
Atribut LinePragmas
Příklad:
linePragmas="false"Platné hodnoty:
true(výchozí)false
Nastavení tohoto atributu na hodnotu false značky, které identifikují čísla řádku v rámci generovaný kód.To znamená, kompilátor ohlásí chyby pomocí čísla řádků generovaného kódu.To vám dává další možnosti ladění, jak můžete ladit text šablony nebo generovaný kód.
Tento atribut může také pomoci, pokud hledáte, že absolutní názvy souborů v pragma působí rušivě sloučení ve správě zdrojového kódu.
Atribut viditelnost
Příklad:
visibility="internal"Platné hodnoty:
public(výchozí)internal
V textu šablony runtime to nastaví atribut viditelnost generované třídy.Výchozí třída je část kódu, ale nastavením veřejného rozhraní API visibility="internal" můžete zajistit, že pouze kódu můžete použít třídu generování textu.