Tips - PowerPoint PPT Presentation

About This Presentation
Title:

Tips

Description:

Tips – PowerPoint PPT presentation

Number of Views:344
Avg rating:3.0/5.0
Slides: 50
Provided by: robho
Category:
Tags: tips | tricks

less

Transcript and Presenter's Notes

Title: Tips


1
Tips TricksTips and Tricks for CodeSmith 3.0
  • Rob Howardrhoward_at_telligent.com
  • CodeSmith Tools, LLC

2
For More Information
  • Learn more
  • www.codesmithtools.com
  • Download free 30 day trial
  • Contact Us
  • sales_at_codesmithtools.com
  • 1 972 407 0688
  • CodeSmith Telligent
  • Partnered together with a common goal
  • Build world-class software tools

3
Agenda
  • What is CodeSmith?
  • Using CodeSmith 3.0
  • Working with Data XML
  • Advanced Tips Tricks
  • Licensing Pricing

4
What is Code Generation
  • Software creation
  • Can be fun and challenging
  • but also repetitive and monotonous
  • Repetition monotony leads to bugs
  • Code generation is not a new concept
  • With most tools you dont control the output
  • Often viewed as a Black Box solution
  • Ex, data layer created (but it is not your code)
  • CodeSmith 3.0
  • Not a Black Box solution
  • Template driven code generation (it is your code)
  • Use existing templates or write new ones

5
The value of CodeSmith
  • The cost of creating software
  • Design, Development, Test, Release
  • Easily runs between 50 - 300/hour
  • CodeSmith
  • CodeSmith 3.0 Professional 299
  • Equivalent to 3-6 hours of development
  • Real value you can measure
  • Dramatically reduces project time cost
  • Quickly pays for itself

6
Your code. Your way. Faster!
  • CodeSmith
  • Version 2.6, released January 2004
  • Version 3.0, released May 2005
  • Version 3.1, released August 2005
  • CodeSmith 3.0 includes
  • CodeSmith Professional Studio (IDE)
  • Visual Studio .NET integration
  • Command line code generation engine
  • Base set of common templates

7
New in Version 3.0
  • Active Generation Templates
  • Statement Completion, AKA Intellisense
  • Deep XML support
  • New merge strategies preserve region
  • Easier template debugging
  • Template caching for faster execution
  • Event driven template architecture
  • Ability to auto-execute SQL scripts
  • and much, much more

8
Customers include
and many others
9
Using CodeSmith 3.0
10
CodeSmith Professional Studio
  • Integrated Development Environment
  • Editing and Executing templates
  • Template Explorer
  • Professional Edition only
  • Features
  • Database schema browser
  • Template syntax highlighting
  • Template, Output, and Compilation views
  • Property editing

11
CodeSmith Templates
  • Similar to ASP.NET page
  • CodeSmith Templates will be familiar
  • Event and lt gt code
  • Template contains
  • Directives
  • Template logic (VB C code)
  • Output Text (your code, comments, etc.)
  • Template events, methods, and properties
  • A CodeSmith template is
  • Document with .cst extension
  • Edit with CodeSmith Studio or text editor

12
Statement Completion
  • CodeSmith 2.6
  • Lacked Intellisense support
  • Required intimate knowledge of APIs
  • CodeSmith 3.0
  • Full statement completion support
  • VB.NET and C
  • Intellisense
  • Makes you more productive
  • Reduces development time

13
My First Template
14
Visual Studio Integration
  • Integrated with Visual Studio .NET
  • Automatically integrated during installation
  • Visual Studio add-in
  • Using CodeSmith within Visual Studio .NET
  • Tools -gt Add-in Manager
  • Tools -gt CodeSmith Explorer
  • Executing Templates in Visual Studio .NET
  • View templates in Template Explorer
  • Right-click to execute templates

15
CodeSmithAdd-in
CodeSmithExplorer
16
Visual Studio Integration
17
Active Passive Generation
  • Passive Generation
  • Use CodeSmith as key stroke saver
  • Render template and then use results
  • CodeSmith may or may not be used again
  • Active Generation (Recommended)
  • Use template as source code
  • Whenever build project run template
  • Ex, write single template to generate 100s of
    classes (or other files)

18
Active Generation Templates
  • Enabled through Visual Studio Custom Tool
  • Active Generation Templates
  • Executed each time the input file changes
  • Perfect for Active Generation
  • Example SampleProjects\CSharpCodeGeneratorSample
  • Execute Active Generation Templates
  • Right-click hashtable.xml in VS .NET
  • Select Run Custom Tool
  • Renders multiple property sets for template
  • Any time xml file is touched templates are
    regenerated
  • Click on show all files to see hidden code files

19
Bound toCustom Tool
GeneratedSource File
GeneratedSource
20
Active Generation Template
21
Working with Data XML
22
Creating Data Access Layer
  • Stored Procedures (SPROC)
  • Preferred data access technique
  • Provides abstraction API for data access
  • Create/Read/Update/Delete (CRUD)
  • Tedious to write (Equals more bugs)
  • Imagine manually creating for every table
  • StoredProcedures.cst Template
  • Generates CRUD layer for any table
  • Created in seconds! for all tables

23
Creating Data Access Layer
24
Auto SQL Script Execution
  • Automatically update database
  • Generated SQL is automatically executed
  • Maintain entities in CodeSmith
  • Updating template to update schema
  • Ex, Telligent used CodeSmith for VSIP
  • 100 template driven database layer

25
Script Execution
26
Building Data Access APIs
  • Data Access Layer
  • APIs for working with data APIs, e.g. sprocs
  • Typically monotonous repetitive code
  • Time consuming to code by hand
  • Encourages Stored Procedures
  • Template generates typed wrapper
  • VB.NET and C
  • Enforces best practices
  • Open connection late, close early
  • Try/Catch blocks

27
Building Data Access APIs
28
Building Data Access APIs
  • AllCommandWrappers.cst Template
  • Point to a database
  • CodeSmith outputs all occurrences
  • OutputDirectory
  • Default location for generated files
  • Configurable, e.g. my project directory
  • Generate entire data layer
  • Can exclude stored procedures

29
Building Data Access APIs
30
Database Documentation
  • DbDocumenter Templates (master.cst)
  • Set basic information and run batch file
  • Ex, database connection and title
  • Great demo of CodeSmith capabilities
  • Simple repetitive problem
  • Would take weeks to create manually
  • Demonstrates CodeSmith best practices
  • Additional ideas
  • Modify templates to generate ASP.NET
  • Generate .CHM help files
  • Add execute capabilities, etc.

31
Database Documentation
32
Working with XML
  • New XmlProperty
  • Work with XML in a strongly typed manner
  • Using XML as metadata very easy
  • With an XSD
  • Strongly typed accessory to XML file
  • Read-only access
  • Without an XSD file
  • XmlDocument type returned

33
XmlProperty Directive
34
Advanced Tips Tricks
35
Debugging Templates
  • Set Debugger.Break() in code
  • Break-point in Template execution
  • .NET JIT Debugger window opens
  • From .NET JIT Debugger window
  • Select Debug Tool
  • EX, Visual Studio .NET 2003
  • Step through template source
  • Reports error in template directly
  • Most tools allow debugging of the result

36
Debugging Templates, cont
  • Compilation is similar to ASP.NET
  • Occasionally template is not enough
  • Need the ability to examine source
  • LinePragmas
  • Defined in lt_at_ CodeTemplate gt
  • Set to true or false
  • Default to true
  • Reports line number in template
  • False, reports line number in generated code

37
Debugging Templates
38
Template Events Overrides
  • Initialization events
  • Called once when template is instantiated
  • OnInit
  • Called once when template is instantiated
  • All other events are raised on each use
  • ParseDefaultValue()
  • Allows for handling of type conversions
  • Called for every default value of a property
  • GetFileName()
  • Override the default output file name

39
Template Events Overrides
  • Render events
  • Similar in concept to ASP.NET events
  • Called each time template instance is rendered
  • OnPreRender
  • Called before template rendering begins
  • Set up default state
  • Render
  • If overridden takes over rendering process
  • Example, if you want a master template
  • OnPostRender
  • Called after template is executed
  • Contains string result of rendered template

40
Template Events Overrides
41
Automated Build Process
  • Easily fit with your build environment
  • Constantly validate ability to build code
  • Example NAnt, MSBuild
  • CodeSmith Command line tool
  • Build project from command line
  • CodeSmith used for Active Generation
  • Easily integrated into environment

42
Command Line Tool
  • Console Application (cs.exe)
  • XML file identifying templates to run
  • Mirror Visual Studio Custom Tool behavior
  • Execute single template, or
  • Execute batches of templates
  • Set properties via the Command Line
  • Example usage
  • SampleProjects\ConsoleSamples
  • Use /batchltfilegt

cs.exe /batchBatchModeSample.xml
43
Batch Generation File Format
  • ltdefaultTemplate/gt
  • Default template used to generate output
  • Can be overridden in ltpropertySet/gt
  • ltvariables/gt
  • Metadata used in property definitions
  • ltdefaultProperties/gt
  • Define global properties
  • ltpropertySet/gt
  • Serialized representation of template properties

44
Batch Generation
45
Merge Strategies
  • Enable Active Generation
  • Cant always generate exactly what you need
  • Custom logic along with Active Generation
  • Example
  • SampleProjects\ConsoleSamples
  • PreserveRegionsMergeSample.cst

46
Merge Strategies
47
Licensing
  • CodeSmith 2.6
  • Standard Edition was free
  • Professional Edition 79
  • CodeSmith 3.0
  • Upgrade from 2.6 to 3.0 Professional 49
  • Standard Edition 49
  • Professional Edition 299
  • Support Options
  • Community Support codesmithtools.com
  • Premier / Incident support 99

48
Conclusion
  • CodeSmith 3.0
  • Most powerful code generation tool available
  • Reduces time spent writing trivial code
  • Be more productive
  • Template driven means its still your code
  • Saves you time and money
  • Coming soon CodeSmith 3.1
  • Minor bug fix, etc. release
  • Includes updated product documentation

49
  • Learn more
  • www.codesmithtools.com
  • Download free 30 day trial
  • Contact Us
  • sales_at_codesmithtools.com
  • 1 972 407 0688
Write a Comment
User Comments (0)
About PowerShow.com