Pokyny pro psaní textu šablony T4
Tyto obecné pokyny mohou být užitečné, pokud generujete kód programu nebo jiných zdrojů aplikace v Visual Studio.Že nejsou stanoveny pravidla.
Pokyny pro šablony návrhu T4
T4 šablony návrhu jsou šablony, které generovat kód ve vaší Visual Studio projektu v době návrhu.Další informace naleznete v tématu Generování kódu návrhu pomocí šablon Text T4.
Generovat proměnné aspekty aplikace.
Generování kódu je nejužitečnější pro ty aspekty aplikace, která může změnit během projektu nebo bude mezi různými verzemi aplikace.Tyto proměnné aspekty oddělte od více výchozí aspekty, tak, aby bylo možné snadněji určit, co má být generován.Pokud aplikace poskytuje webový server, samostatné standardní stránky slouží funkce z logiky, která definuje navigační cesty z jedné stránky na jinou.Kódování proměnných aspekty v jedné nebo více zdrojových modelů.
Model je souboru nebo databáze, která čte jednotlivé šablony získat určité hodnoty pro proměnné části kódu, který je generován.Modely mohou být databáze, soubory XML vlastní návrh, diagramy nebo domény specifické jazyky.Generovat mnoho souborů se obvykle používá jeden model Visual Studio projektu. Každý soubor je generováno z samostatné šablony.V projektu můžete použít více než jeden model.Může například definovat model pro navigaci mezi webové stránky a samostatného modelu pro rozložení stránky.
Model zaměřte se na potřeby uživatelů a slovník, nikoli na implementaci.
Například v aplikaci webu očekáváte modelu pro odkazy na webové stránky a hypertextové odkazy.V ideálním případě zvolte formu prezentace, která vyhovuje druh informací, které představuje model.Model navigační cesty přes web, může být například diagramu políčka a šipky.
Test generovaný kód.
Ověřte, zda výsledný kód funguje jako uživatelé vyžadují pomocí ruční nebo automatické testy.Zabránit generování testů z stejný model, ze kterého je generován kód.V některých případech Obecné zkoušky lze provést na modelu přímo.Můžete například napsat test, který zajišťuje, že každé stránky na webu lze dosáhnout navigace z jakékoli jiné.
Vlastní kódu: generování částečné třídy.
Povolit pro kód, který psát rukou dále do generovaného kódu.Není, že schéma generování kódu na účet pro všechny možné varianty, které by mohly vzniknout.Proto by měl očekávat přidat nebo přepsat některé generovaný kód.Kde je generované materiálu v.NET jazyk jako Visual C# nebo Visual Basic, jsou užitečné zejména dvou strategií:Generované třídy by měly být částečné.Umožňuje přidávat obsah do generovaného kódu.
Třídy by generovány ve dvojicích, jeden od druhého dědění.Základní třída by měla obsahovat generované metody a vlastnosti a odvozené třídy by měl obsahovat pouze konstruktory.To umožňuje ručně psaných kódu potlačit jakýkoli generované metody.
V ostatních generované jazyky, jako například XML, použijte <#@include#> směrnice provádět jednoduché kombinace rukou a generovaného obsahu.Ve složitějších případech pravděpodobně post-processingu krok, který kombinuje vygenerovaný soubor s rukou soubory zápisu.
Přesunout do zahrnout soubory nebo spuštění šablony společný materiál
Aby se zabránilo opakování podobných bloky textu a kód ve více šablonách, použijte <#@ include #> směrnice.Další informace naleznete v tématu T4 Direktiva začlenění.Můžete také vytvořit spuštění text šablony do samostatného projektu a volat je z šablony návrhu.Chcete-li to provést, použijte <#@ assembly #> přístup k projektu samostatné směrnice.Příklady naleznete v tématu "dědičnosti v textu šablony" v blogu Gareth Jones.
Zvažte přesunutí velké bloky kódu do samostatných sestavení.
Máte-li kód velké bloky a bloky funkce třídy, může být užitečné některé tento kód přesunout do metod, které kompilace do samostatného projektu.Můžete použít <#@ assembly #> směrnice přístup ke kódu v šabloně.Další informace naleznete v tématu T4 Směrnice pro sestavení.Metody můžete umístit do abstraktní třída může zdědit šablony.Abstraktní třída musí dědit z Microsoft.VisualStudio.TextTemplating.TextTransformation.Další informace naleznete v tématu T4 Šablona směrnice.
Generovat kód není konfigurační soubory
Jeden způsob zápisu proměnných aplikací je obecný program kód, který přijímá konfigurační soubor.Aplikace napsané tímto způsobem je velmi flexibilní a můžete změnit konfiguraci při změně obchodní požadavky bez opětovné sestavení aplikace.Nevýhodou tohoto přístupu je však, že bude aplikace provádět méně dobře než konkrétní aplikace.Jeho kód programu bude také obtížnější přečíst a udržovat, částečně, protože má vždy řešit většinu obecné typy.Naopak aplikace, jejichž pohyblivé části jsou generovány před kompilací může být silný.Díky tomu je mnohem jednodušší a spolehlivější psát rukou kód a integrovat s vytvořené části softwaru.
Chcete-li získat úplné výhody generování kódu zkuste generovat kód programu místo konfiguračních souborů.
Použití složky generovaný kód
Umístit šablony a soubory vytvořené ve složce projektu generovaný kód, jasně, tyto nejsou soubory, které by přímo upravovat.Pokud vytvoříte vlastní kód přepsat nebo do generované třídy, umístěte do složky s názvem vlastní kód těchto tříd.Struktura typické projektu vypadá takto:MyProject Custom Code Class1.cs Class2.cs Generated Code Class1.tt Class1.cs Class2.tt Class2.cs AnotherClass.cs
Pokyny pro spuštění (předzpracovány) T4 šablony
Přesunout do šablony zděděné společný materiál
Dědičnost lze sdílet metody a textové bloky mezi T4 text šablony.Další informace naleznete v tématu T4 Šablona směrnice.Můžete také zahrnout soubory, jejichž spuštění šablony.
Velké subjekty kódu přesunete do částečné třídy.
Každá šablona spuštění generuje definice částečné třídy, který má stejný název jako šablonu.Můžete napsat kód souboru, který obsahuje jinou částečnou definici stejné třídy.Třída tímto způsobem můžete přidat metod, polí a konstruktory.Tyto členy lze volat z bloků kódu v šabloně.Výhodou této činnosti je kód je snazší, protože technologie IntelliSense je k dispozici.Také můžete dosáhnout lepší rozdělení mezi prezentace a základní logika.
Například v MyReportText.tt:
The total is: <#= ComputeTotal() #>
In MyReportText-Methods.cs:
private string ComputeTotal() { ... }
Vlastní kódu: poskytují Rozšiřovací body
Zvažte možnost generování virtuální metody v < blokuje funkci třídy # + # >.To umožňuje vytvořit jedinou šablonu pro použití v mnoha kontextech beze změny.Namísto úpravou šablony můžete sestavit odvozené třídy, který poskytuje minimální další logiku.Odvozené třídy může být buď pravidelné kód nebo může být spuštění šablony.Například v MyStandardRunTimeTemplate.tt:
This page is copyright <#= CompanyName() #>. <#+ protected virtual string CompanyName() { return ""; } #>
V kódu aplikace:
class FabrikamTemplate : MyStandardRunTimeTemplate { protected override string CompanyName() { return "Fabrikam"; } } ... string PageToDisplay = new FabrikamTemplate().TextTransform();
Pokyny pro všechny šablony T4
Samostatné shromažďování dat z generování textu
Pokuste se vyhnout směšování výpočtu a textové bloky.V každé šabloně text použít první < # code blokovat # > nastavení proměnných a provádět složité výpočty.Z první blok textu na konec šablony nebo první < # + třída funkci blokování # > zabránit dlouhých výrazů a vzniku smyček a podmíněné, pokud obsahují textové bloky.Tento postup usnadňuje šablony číst a udržovat.Nepoužívejte .tt zahrnout soubory
Použít jinou příponu, například .ttinclude pro soubory zahrnutí.Použití .tt pouze pro soubory, které mají být zpracovány buď jako spuštění nebo návrhu text šablony.V některých případech Visual Studio rozpozná .tt soubory a jejich vlastnosti pro zpracování se automaticky nastaví.Začněte každou šablonu jako pevné prototypu.
Příklad kódu nebo textu, který chcete generovat a ujistěte se, zda je správný zápis.Změňte jeho příponu na .tt a postupně vložit kód, který upraví obsah čtením modelu.Zvažte použití typové modely.
Přestože schématu XML, databázi nebo můžete vytvořit pro modely, může být užitečné vytvořit určitý jazyk domény (DSL).DSL má výhodu, vygeneruje Třída představující jednotlivé uzly ve schématu a vlastnosti, které představují atributy.To znamená naprogramovat z hlediska obchodního modelu.Příklad:Team Members: <# foreach (Person p in team.Members) { #> <#= p.Name #> <# } #>
Zvažte použití diagramů pro modely.
Mnoho modely jsou nejefektivnější předloženy a spravovány pouze jako text tabulky, zvláště pokud velmi velké.Pro některé druhy obchodních požadavků však je důležité pro objasnění složité sady vztahy a pracovní toky a diagramy jsou nejlépe hodí střední.Výhodou diagramu je snadné diskutovat s uživateli a dalšími zúčastněnými stranami.Generováním kódu z modelu na úrovni obchodní požadavky můžete vytvořit kód flexibilnější při změně požadavky.
Diagramy tříd a činnost UML často lze upravit pro tyto účely.Můžete také navrhnout vlastní typ diagramu jako domény specifické pro jazyk (DSL).Kód lze generovat z UML a DSL, linky.Další informace naleznete v tématu Modelování aplikace a Modelování aplikace.