Visual Studio Shell
The Visual Studio shell is the primary agent of integration in Visual Studio. The shell provides necessary functionality to enable VSPackages to share common services. Because the architectural goal of Visual Studio is to vest primary functionality in the VSPackages, the shell is a framework to provide basic functionality and support cross-communication among its component VSPackages.
Shell Responsibilities
The shell has the following key responsibilities:
Supporting (through COM interfaces) basic elements of the user interface (UI). These include default menus and toolbars, document window frames or multi-document interface (MDI) child windows, and tool window frames, and docking support.
Maintaining a running list of all currently open documents in a running document table (RDT) in order to coordinate the persistence of documents and to guarantee that one document cannot be opened in more than one way, or in incompatible ways.
Supporting the command-routing and command-handling interface, IOleCommandTarget.
Loading VSPackages at appropriate times. Delay-loading a VSPackage is necessary to improving performance of the shell.
Managing certain shared services, such as SVsShell, which provides basic shell functionality, and SVsUIShell, which supplies basic windowing functionality.
Managing the solution (.sln) files. Solutions contain groups of related projects, similar to workspace (.dsw) files in Visual C++ 6.0.
Tracking shell-wide selection, context, and currency. The shell tracks the following types of items:
The current project
The current project item or ItemID the current IVsHierarchy
The current selection for the Properties window or SelectionContainer
The UI context IDs or CmdUIGuids that control the visibility of commands, menus, and toolbars
The currently active elements such as the active window, document, and undo manager
The User Context attributes that drive Dynamic Help
The shell also mediates communication among installed VSPackages and current services. It supports the core features of the shell and makes them available to all VSPackages integrated in Visual Studio. These core features include the following items:
About dialog box and splash screen
Add New and Add Existing Item dialog boxes
Class View window and Object Browser
Add Reference dialog box
Document Outline window
Dynamic Help window
Find and Replace
Open Project and Open File dialog boxes on the New menu
Options dialog box on the Tools menu
Properties window
Solution Explorer
Task List window
Toolbox