Visual Studio shell 是 Visual Studio 中集成的主要代理。 shell 提供了必要的功能,使 VSPackages 能够共享通用服务。 由于 Visual Studio 的体系结构目标是在 VSPackages 中赋予主要功能,因此 shell 是一个框架,用于在其组件 VSPackage 之间提供基本功能并支持跨通信。
Shell 职责
shell 程序具有以下关键责任:
- 支持(通过 COM 接口)用户界面(UI)的基本元素。 其中包括默认菜单和工具栏、文档窗口框架或多文档界面(MDI)子窗口,以及工具窗口框架以及停靠支持。 
- 维护正在运行的文档表(RDT)中所有当前打开的文档的运行列表,以便协调文档的持久性,并确保一个文档不能以多种方式或不兼容的方式打开。 
- 支持命令路由和命令处理接口 - IOleCommandTarget。
- 在适当时间加载 VSPackage。 延迟加载 VSPackage 是提高 shell 性能所必需的。 
- 管理某些共享服务,例如 SVsShell,提供基本 shell 功能,并提供 SVsUIShell基本窗口功能。 
- 管理解决方案(.sln)文件。 解决方案包含一组相关项目,类似于 Visual C++ 6.0 中的工作区 (.dsw) 文件。 
- 跟踪 shell 范围的选择、上下文和货币。 Shell 跟踪下列类型的项目: - 当前项目 
- 当前项目项或 ItemID 当前 IVsHierarchy 
- “ 属性” 窗口的当前选择或 - SelectionContainer
- 控制命令、菜单和工具栏可见性的 UI 上下文 ID 或 CmdUIGuids 
- 当前活动元素,例如活动窗口、文档和撤消管理器 
- 驱动动态帮助的用户上下文属性 
 - shell 还调解已安装的 VSPackages 和当前服务之间的通信。 它支持 shell 的核心功能,并使其可供 Visual Studio 中集成的所有 VSPackage 使用。 这些核心功能包括以下项: 
- 关于 对话框和启动屏幕 
- “添加新项”和“添加现有项 ”对话框 
- 类视图 窗口和 对象浏览器 
- “引用 ”对话框 
- “文档大纲 ”窗口 
- “动态帮助 ”窗口 
- 查找 和 替换 
- 在“新建”菜单上打开“项目”和“打开文件”对话框 
- “工具”菜单上的“选项”对话框 
- “属性” 窗口 
- 解决方案资源管理器 
- “任务列表” 窗口 
- 工具箱