Now anyone can download the Visual Studio Integration Program SDK and write VS.NET-integrated tools!
http://www.vsipdev.com/
This will be great for the .NET community.
If you want to see what you can do with VSIP, check DeKlarit ;)
Need a disposable email address so you can sign up for some web site, quick? You've already got one, at Paul Tyma's clever Mailinator. Just send an email to any address @mailinator.com. Your email address already exists. Get your email sent here, THEN come check mailinator. Your mail will be waiting. More proof that great UI design is done by taking away, not adding things.
Super cool!
Early and Adopter suggest that sometimes a good OO design can get the same results as code generators.
Any code generator needs some kind of abstraction as the input. It can be a database metadata, a domain specific language, etc.
ASP.NET is a code generator. It reads an .ASPX file and generates a .cs file. The ASP.NET team built a domain-specific language for defining web forms.
Of course you can write the same ASP.NET page in an OO way. Just read the .cs file that is generated and refactor it to make it look like code you could have written.
Then compare it with the ASPX code and see which one is easier to read and easier to maintain.
You also have ASP.NET controls, like <asp:CompareValidator></asp:CompareValidator> which are translated to method calls that _generate_ HTML code. Again, they built an abstraction that generates code.
So, if you thought you were not using a code-generation tool in your .NET project, think again ;)
Just a side note.
Code generation makes sense when you are applying a common coding pattern in the same places every time. Sometimes you can do the same with a good OO design, sometimes you cannot. Of course, I won't build a code generator for the .NET BCL, but for enterprise applications, I think there is a lot of places where you can use code generators.
Enterprise applications are usually quite similar. Presentation -> Business Logic -> Data Access -> Database. We all agree it's quite easy to generate the data access layer, as we all agree on how to describe a database. If we all agree on how to describe business logic and on how to describe a presentation layer, then we can generate all the layers. You would probably have a workflow engine involved, and there are also ways to generate a workflow description.
Enterprise applications also have 'services' that the generated components will use like transactions, caching, etc. You'll just generate components that use the services of the pre-existing framework. It also makes no sense to think that we'll generate the application's infraestructure.