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:
IVsGetCfgProvider
IVsProjectBuildSystem
IVsBuildPropertyStorage
IVsSccProject2
IVsProject4
IVsUIHierarchy
IVsPersistHierarchyItem2
IOleCommandTarget
IVsHierarchyDeleteHandler
IVsProjectSpecialFiles
IVsFileBackup
IPersistFileFormat
IVsProjectSpecificEditorMap
IVsDependencyProvider
IVsDesignTimeAssemblyResolution
The extended Visual Studio COM interfaces:
The drag/drop Visual Studio COM interfaces:
IVsHierarchyDropDataSource
IVsHierarchyDropDataSource2
IVsHierarchyDropDataTarget
IVsHierarchyDirectionalDropDataTarget
IVsUIHierWinClipboardHelperEvents
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: