CPS's implementation of the IVsProject object is the main presentation of
the project in the Visual Studio IDE, and also the main entry point for
other components to interact with the project. It implements a bunch of
interfaces. Some of them are mandatory to be implemented on a project,
some of them are optional but nice to have, and some of them are for internal
purposes. I am going to list and categorize most of the interfaces except
the ones for internal usage. Hopefully, this will demonstrate what could
be expected from the IVsProject object. Noting all the interfaces below are
designed for other Visual Studio components to interact with the project.
CPS extensions should use CPS APIs.
The Visual Studio COM interfaces that people would expect from the IVsProject
object in general:
IVsGetCfgProviderIVsProjectBuildSystemIVsBuildPropertyStorageIVsSccProject2IVsProject4IVsUIHierarchyIVsPersistHierarchyItem2IOleCommandTargetIVsHierarchyDeleteHandlerIVsProjectSpecialFilesIVsFileBackupIPersistFileFormatIVsProjectSpecificEditorMapIVsDependencyProviderIVsDesignTimeAssemblyResolution
The extended Visual Studio COM interfaces:
The drag/drop Visual Studio COM interfaces:
IVsHierarchyDropDataSourceIVsHierarchyDropDataSource2IVsHierarchyDropDataTargetIVsHierarchyDirectionalDropDataTargetIVsUIHierWinClipboardHelperEvents
This CPS interface is designed as the entry point for other Visual Studio components to get into CPS world.
IVsBrowseObjectContext
The additional Visual Studio COM interfaces for variant purposes: