I've made several CodeSmith related posts on this blog:
- Codesmith: Code Generation v. Refactoring
- Batch code generation with CodeSmith Console
- Things that fundamentally change how you program
There's another topic I'd like to explore - using CodeSmith for analyzing Xml data and Database schemas. For example, suppose you wanted to compare if two tables had similar schemas. For example I wanted to see if one database had different column lengths than another for all tables in the database. There's several ways you can do this:
- Manual --> bad (too slow, error prone, tedious, not-reproducible)
- Build your own custom console app, use ADO.Net --> very slow to create, to easy to have errors
- Find a custom tool specifically for DB comparisons --> yet another tool to learn, may provide far more functionality than needed
- Use CodeSmith's Schema Explorer --> has potential!
CodeSmith's Schema explorer is extensive - it lets you start at the database and drill down to its collections of tables, columns, and individual properties. So it has the info needed for most tasks. It's also easy to use, so it saves you time in writing your own equivalent object. It's also a reusable tool. I.e. if you need to learn a technology, learn one that is helps out with more than just the current problem. You could create two SchemaExplorer.DatabaseSchema objects, and then cycle through their tables and columns, comparing them.
CodeSmith also has the XmlProperty, which lets you analyze an Xml document. You could program compare the Xml doc to the database schema.
The "generated code" could be the results of your analysis. For example, wherever the condition you're searching for is met, you could Response.WriteLine the necessary info.
While CodeSmith is designed for CodeGeneration, it also can be used for simple analysis of data sources that are commonly used as inputs for that generate - such as Xml docs and Database schemas.