Visual Studio provides a programming interface known as the automation model, a set of powerful interfaces for customizing the environment. The automation model is the object model that enables end users to create Visual Studio add-ins and extensions.
Both add-ins and VSPackages let you customize the end user experience, but VSPackages offer you control over the most basic functions of the IDE. You can use the automation model together with a VSPackage in order to provide a rich end-user experience.
In addition, it is appropriate for you, as a VSPackage developer, to contribute to the automation model; by doing this, you enable end users of your VSPackage to create add-ins and generally provide a consistent user model experience when they use your VSPackage in Visual Studio.
To make the end-user experience consistent, you can follow a set of guidelines as you design your VSPackage so that the automation model for your VSPackage follows the ideas in Visual Studio.
Explains the standard project objects that are required to create automation for your new project type and illustrates the path that project automation follows. This topic also provides listings of declarations and implementation for classes.
Explains that providing automation is a good idea whenever you want to make automation objects available on a window, and the environment does not already provide a ready-made automation object. Discusses automation for tool windows and document windows.