3. Über René Leupold
• Siehe Xing ;-)
• Speaker VSone 16.-17. Feb. 2011,
München (www.vsone.de)
– Inheritance mit EF (DB First, Model First,
Code First)
Hinweis: Verwendung für eigene Präsentationen nur mit Einverständnis des Autors
4. Was ist T4
• Code-Generator mit ASP ähnlicher
Syntax
• Templatesprache in VB.NET und C#
• Generierung von
technologieunabhängigem Code
• Erstmalig built-in mit VS 2008
• Verbesserte Integration mit VS 2010
Ein Tool das macht was ich
will (fast immer)
6. Abgrenzung
• Eine das kann VS Ultimate Show
• Eine Einführung in die Erstellung
eigener DSL’s
• Eine T4 Missionierung
Was ist dieser Vortrag nicht
7. Agenda
• Werkzeuge für Intellisense
• Syntax
• Prozessablauf und Architektur
• Aufbau Text Template
• Anwendungsszenarien
• Aufbau Preprocessed Template
• Beispielprojekt
• Vorteile
• Herausforderungen
• Ressourcen
8. Werkzeuge für Intellisense
Tangible T4 – Editor
• Visual Studio 2005
• Visual Studio 2008
• Visual Studio 2010
• Wir verlosen heute eine
Lizenz, das nächste Mal
auch und das
übernächste Mal immer
noch, bis Ende Jahr ;-)
Visual T4 – Editor (Clarius)
• Visual Studio 2005
• Visual Studio 2008
• Visual Studio 2010
– mittlerweile Beta
11. Include file=
• Relative Pfadangaben dirtemplate.ttinclude
• Umgebungsvariablen %pfad%template.ttinclude
• VS Makro $(SolutionDir)t4incT4.ttinclude
Neu in VS 2010
• Include Folder in Registry setzen
Datei ohne Pfad
• Drag and Drop - Support mit tangible T4-Editor
• Verhält sich wie SSI (Vorsicht)
Besonderheit
[HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftVisualStudio10.0TextTemplatingIncludeFolders.tt]
12. assembly name=
• Umgebungsvariablen %pfad%template.tt
• VS Makro $(ProjectDir)binT4.dll
Neu in VS 2010
• GAC
• Public Assembly Folder VS
Datei ohne Pfad
• Sperrung der Assembly bis Solution geschlossen wird
Besonderheit
Alternative: VolatileAssembly
13. assembly name=
• Assembly wird nicht mehr gesperrt
Neu ab VS 2010 SP1
• Temporäre Kopie der Assembly
• So wie VolatileAssembly
Angelehnt an Verhalten von ASP.NET
• ShadowCopy = false
Besonderheit (kann deaktiviert werden)
HKEY_LOCAL_MACHINESOFTWARE[Wow6432Node]MicrosoftVisualStudio10.0TextTemplating
14. • Primärer Einsatz für DSL
• Ermöglicht Zugriff auf das Modell
• Eigene DSL mit VS Visualization &
Modeling SDK
Class Diagram (als Beispiel)
Generated Directive
15. • Klasse muss von DirectiveProcessor
ableiten
• CodeDom Provider verwenden, wenn
Support für C# und VB.NET
• Klasse in Registry registrieren
• Bsp.: VolatileAssembly
• Alternative: Verwenden einer eigenen
Assembly
DirectiveProcessor
Custom Directive
20. ANWENDUNGSSZENARIEN
o Debugging
o Generierung von Datenbank(Bottom up)
o Mehrere Files mit einem Text Template erstellen
o Parametrisierte Text Templates
o Code in andere Solution erstellen (T4 Toolbox und TemplFileM.)
o Visual Studio 2010 Automation
o Refactoring handcodierter Klassen mit T4, VS FCM und StoryQ
o Beispiele Technologieunabhängigkeit mit Excel
o EF Codegenerierungsvorlage erstellen
o Model First mit EF CTP 5 und «UML/DSL»
24. BEISPIELPROJEKT
o Angepasster EDM-Designer
o Angepasste EF Codegenerierungsvorlage
o Generierung des langweiligen Codes
o Codezentrierte Entwicklung der funktionalen Anforderungen
o Generierung des StoryQ-Testgerüsts aus TFS Workitem
o Generierung der WCF-Services basierend auf den
geschriebenen Code
o T4 Templates ausführen mit F6 ;-)
26. Vorteile
Innerhalb der Solution (Freiräume)
Code-Qualität
Steigerung der Produktivität
Technologieunabhängiger Code
Keine Methodenbindung
Mehr Zeit für die Anforderungen
28. Herausforderungen
Menschlicher Faktor
Arbeiten ohne den gewohnten Komfort von VS
Kein Framework mit Basisskripts
Strukturierte Anforderungsdokumente
Technologische Weiterentwicklung der Templates
Designüberlegungen
29. T4 Erweitert
• EntityFrameworkTemplateFileManager
(EF.Utility.CS.ttinclude)
• Damien Guards Output manager
• TemplateFileManager by myself
• T4Toolbox (unterstützt Ausgabe in unterschiedliche
Projektmappen)
Mehrere Dateien mit T4
• MsBuild-Integration (VS Visualization & Modeling SDK)
• Chirpy (VS AddIn)
T4 mit Build ausführen