Implementing the IVsPackage Interface
All VSPackages must implement the IVsPackage interface. Visual Studio calls the methods of IVsPackage to initialize and close VSPackages, to get associated property pages, and for other reasons. The IVsPackage interface is the gateway interface between Visual Studio and a VSPackage.
Much of the unmanaged sample code in the Visual Studio Integration section of the Visual Studio SDK uses the Active Template Library (ATL). You do not need to use ATL to create VSPackages, but you must understand ATL to understand the sample code.