Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

NRWConf2013_T4CodeGeneration

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Nächste SlideShare
Processing x Git
Processing x Git
Wird geladen in …3
×

Hier ansehen

1 von 30 Anzeige

Weitere Verwandte Inhalte

Ähnlich wie NRWConf2013_T4CodeGeneration (20)

Aktuellste (20)

Anzeige

NRWConf2013_T4CodeGeneration

  1. 1. T4 Code Generation Christian Giesswein 1
  2. 2. About Me • Christian Giesswein ChristianG@ppedv.at • Development Trainer bei ppedv AG • Die bunte Welt von C#/.NET – C#, WCF, WPF, XAML, Blend, ADO.NET,.. • Open-Source: osm2mssql • www.giesswein-web.at • Twitter: @GiessweinWeb 2
  3. 3. Die ppedv AG • IT-Schulungsunternehmen für Microsofttechnologien in Deutschland/Österreich • 11 Standorte 12 Standorte (NEU: Düsseldorf) • (Entwickler-)Konferenzen – VSOne (www.vsone.de) – Advanced Developer Conference (www.adc10.msd) – GUI & Design (www.guianddesign.com) • Eigene Fachzeitschrift: Visual Studio One 3
  4. 4. Agenda • Was werden Sie nun hören? • T4 Templating – Microsoft ist super • Einsatzzwecke – Apple nicht so super • Der Prozess – Linux – naja.. • Hello World mit T4 – T4 – Syntax für 4 – Bier, Wein, Schnaps und Milch • Die Tanken • Tooling • Architektur • Self-Hosting 4
  5. 5. T4 – Was ist das ?! T4 = Code der anderen Code schreibt damit der Code funktioniert…
  6. 6. T4 Templating • Text Template Transformation Toolkit • Beliebige (Text-)Dateitransformationen durchführen • Dateiendung: *.tt • Visual Studio „Unterstützung“ • C# oder VB.NET 6
  7. 7. Verwendungszweck • Entity Framework • Compile-Informationen ablegen – Uhzeit/Pfad/Benutzer/etc. • • • • Serialisierung mit T4 XML/JSON zu Klassen transformieren ASP.NET – Templates erzeugen … 7
  8. 8. Der T4-Prozess Entwickler Template „Visual Studio“ Compiled Template Output Entwickler 8
  9. 9. Action !!! T4 Code Generation Hello World 
  10. 10. Was ist passiert ? Template Compiled Template Output 10
  11. 11. Compiled Template? • Ausgangsdatei „HelloWorld.tt“ wird eingelesen und „kompiliert“
  12. 12. Compiled Template? • Ein „Host“ (Visual Studio“) führt die kompilierte Klasse aus und „Transformiert“ somit das Template
  13. 13. Syntax • <# – Eine Anweisung folgt • <#= – Eine Ausgabe folgt • <#+ – Eine Klassenerweiterung folgt
  14. 14. Action !!! T4 Code Generation Klassenerweiterungen
  15. 15. T4-Anweisungen • <#@ template [language="VB"] [hostspecific="true|TrueFromBase"] [debug="true"] [inherits="templateBaseClass"] [culture="code"] [compilerOptions="options"] [visibility="internal"] [linePragmas="false"] #> 15
  16. 16. T4-Parameter • <#@ output extension=".fileNameExtension" [encoding="encoding"] #> 16
  17. 17. T4-Assembly / T4-Import • <#@ assembly name="[file name]" #> • <#@ import namespace="namespace" #> 17
  18. 18. Xml2Classes • Einfaches, typisches Beispiel Xml2Classes – Transformierung einer einfaches XML-Datei in eine Klasse Action !!!
  19. 19. Problemfindung • T4-Templates unterstützen Breakpoints • Ausführen per Kontextmenü „Debug T4 Template“ Action !!!
  20. 20. T4 Toolbox • T4 Toolbox – Syntax Highlighting – Gratis – http://www.olegsych.com/t4toolbox 20
  21. 21. DevArt • • • • • Unterstützt VS 2008/2010/2012 IntelliSense Syntax Highlighting Gratis! http://www.devart.com/t4editor/download.html
  22. 22. T4 – Advanced • T4 kann auch das eigene Projekt erweitern • Eigene Assembly mit: – <#@ Assembly name="$(TargetPath)" #> • Achtung! Letzter Buildstand! Action !!! 22
  23. 23. Action !!! T4 Code Generation MVVM Automatische ViewModel-Erzeugung
  24. 24. T4 - Advanced • T4 Unterstützt Out-Of-The-Box nur eine Ausgabedatei pro T4-Vorlage – Kann modifiziert werden Action !!!
  25. 25. T4 – Deep Dive 25
  26. 26. T4 – Eigener Host • Visual Studio SDK – Microsoft.VisualStudio.TextTemplating.11.0 – Microsoft.VisualStudio.TextTemplating.Interfaces.1 1.0 • Engine aus dem SDK  Transformation • Host kann selber geschrieben werden: ITextTemplatingEngineHost Action !!! 26
  27. 27. T4 „Automatic Run“ • T4 Templates werden beim Speichern (STRG+S) automatisch ausgeführt. • TextTransformer.exe ist der Standardhost – Möglichkeit 1: Per PRE-Build Ereignis – C:Program Files (x86)Common FilesMicrosoft SharedTextTemplating12.0TextTransform.exe
  28. 28. T4 „Automatic Run“ • Seit VS2012 auch „Out-Of-The-Box“: – Möglichkeit 2: MSBuild • Projekt (*.csproj) bearbeiten • Erfordert Visual Studio 2012 Data Visualization SDK <PropertyGroup> <TransformOnBuild>true </TransformOnBuild> </PropertyGroup> <Import Action !!! Project="$(MSBuildExtensionsPath)MicrosoftVisualStudiov11. 0TextTemplatingMicrosoft.TextTemplating.targets" />
  29. 29. Entity Framework • Entity Framework mit T4 (=DbContext Generator) • T4 Templates generieren aus *.EDMX die POCO-Klassen – C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDEExtensionsMicrosoftEntity Framework ToolsTemplatesIncludes Action !!! 29
  30. 30. FRAGEN ?

×