Checklist: Creating New Project Types
You must complete several tasks to create a new project type. The following checklist provides a guide to those tasks.
Design the functionality for your new project type. For more information, see Project Type Design Decisions.
Determine which editors are used for code and other project elements. You can use the core or standard editors, or you can create and use project-specific editors. For more information, see Creating Custom Text Editors and Designers and How to: Open Project-Specific Editors.
Determine the level of participation your project items will have in the Class View and the Object Browser. For more information, see Supporting Symbol-Browsing Tools.
Derive new classes based on design decisions that you made previously for your project and project items.
Write the code for the following project type components:
Project factory, to manage creating new projects and opening existing projects. For more information, see Creating Project Instances By Using Project Factories.
Project hierarchy and command handling. For more information, see Implementation of Project Interfaces, Elements of a Project Model, Project Model Core Components and How to: Create and Handle Commands in VSPackages (C#).
Configuration independent properties to display in the Properties window. For more information, see Properties Window and Property Pages.
Project configuration properties as implemented in property pages to show configuration-dependent properties. For more information, see Managing Configuration Options.
Enumerating outputs for deployment. For more information, see Project Configuration for Output.
Objects, or classes derived from IDispatch, available for Automation. For more information, see Automation Model.
XML Command Table (.vsct) files. For more information, see Visual Studio Command Table (.Vsct) Files.
Test, debug, and start your project type.
Display your project in the Project tab of the Add Reference dialog box by setting VARIANT_TRUE as the value for VSHPROPID_ShowProjInSolutionPage. For more information, see __VSHPROPID and GetProperty.