The following tables expand on the project model. The tables present brief descriptions of the interfaces and services identified in the model, and the interfaces and services associated with specific objects. Additionally, the tables detail other interfaces that are optional in project creation and maintenance depending on the requirements of your specific project type.
Manages the addition and removal of project items, opens editors, and maintains mapping between each document moniker and the VSITEMID. Inherits from IVsProject and IVsProject2.
Enables command execution similar to that of IOleCommandTarget for commands such as Cut and Rename that apply only when the focus is in Solution Explorer.
Serves as the primary command target interface for a project hierarchy. It is the standard interface for querying objects for their command status or state and running commands. Available when you are not focused in the Project window.
Coordinates the persistence of the project state. Typically, the project state is stored as a project file but can be adapted to storage systems that are not file-based.
Enables the project to manage all aspects of persistence for its project items, either as files on disk or objects in other storage systems. The IVsPersistHierarchyItem2 interface is used for items that do not implement the IVsPersistDocData2 interface.
Manages project configuration objects, such as Debug/Release configurations. Build, deploy, and debug operations are coordinated through project configuration objects.
Implemented by hierarchies to control the delete (destructive) or remove (non-destructive) options for hierarchy items. Call Query Interface on the IVsHierarchyDeleteHandler interface from the IVsHierarchy interface.
Provides the implementation option of having the object that supports the IVsCfgProvider2 interface on a different COM identity than the project object that implements the IVsHierarchy interface.
Optional interface implemented to make your project extensible by other developers. The IVsProjectStartupServices interface enables a third-party VSPackage to register a GUID that you persist into your project file so that every time your project loads, you load the third-party service GUID into your project file and call QueryService for that GUID.
Implemented by source hierarchies in a UIHierarchy window to coordinate clipboard operations such as cut, copy, and paste. Use the AdviseClipboardHelperEvents interface to register clipboard events.
Provides information about a dragged item relative to its data source during a drag-and-drop operation in a UI hierarchy window. Called from the IVsHierarchy interface.
Provides information about a dragged item relative to its drop target during a drag-and-drop operation in a UI hierarchy window. Called from the IVsHierarchy interface.
Used by VSPackages that implement project types to register that their project factory exists with the IDE. Your VSPackage must call QueryService for this service and register its project factory when IVsPackage::SetSite method is called. If the SetSite method is not called, your project is not instantiated.
Provides access to the IDE's internal, built-in notion of the current solution, such as the ability to enumerate projects, create new projects, take notice of project changes, and so on.
Provides basic UI-related IDE functionality, such as the ability to create and enumerate tool windows or document windows or to report an error to the user.
Used to implement clipboard events on the project object in the hierarchy. SVsUIHierWinClipboardHelper lets you correctly handle cut, copy, and paste operations.