Visual Studio .NET has an extensible wizard architecture. You can plug into this at two levelsyou can implement the IDTWizard interface directly, or you can use the wizard engineVsWizard.VsWizardEngine--which implements this for you. If you use the engine, then you need to supply only template files and a script file. The templates are used as the basis for any new files that get created, and there is a directive mechanism that allows them to be modified at creation time. You can also supply an HTML-based user interface to collect settings from the user. All of the project and item types built in to VS.NET are built on this mechanism, making it very easy to create your own modified versions.