In Visual Studio, projects are the containers that developers use to organize source code files and other resources that appear in Solution Explorer. Typically, projects are files, for example, a .csproj file for a Visual C# project, that store references to source code files and resources like bitmap files. Projects let you organize, build, debug, and deploy source code, references to Web services and databases, and other resources. VSPackages can extend the Visual Studio project system in three main ways: project types, project subtypes, and custom tools.
Project types add support for new kinds of projects, such as programming languages. For example, each language that Visual Studio supports has its own project type, and the IronPython integration sample includes a project type for the IronPython language. You must create a project type for languages other than Visual C# and Visual Basic, to customize how items are built, debugged, deployed, and displayed in Solution Explorer. For more information, see Project Types and Visual Studio Extensibility Samples.
Project subtypes are based on project types and can be used to customize the way projects are built, debugged, and deployed. Visual Studio uses project subtypes with Smart Device projects; they customize deployment by copying a newly-built program from a development computer to the target device. The Visual C# and Visual Basic project types can be used as the basis for project subtypes; Visual C++ project types cannot. Your own project types can also be used as the basis for project subtypes. For more information, see Project Subtypes.