Visual Studio Shell

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 使用。 这些核心功能包括以下项:

  • 关于 对话框和初始屏幕

  • “添加新项”和“添加现有项 ”对话框

  • 类视图 窗口和 对象浏览器

  • “引用 ”对话框

  • “文档大纲 ”窗口

  • “动态帮助 ”窗口

  • 查找替换

  • 在“新建”菜单上打开“项目”和“打开文件”对话框

  • “工具”菜单上的“选项”对话框

  • 属性窗口

  • 解决方案资源管理器

  • “任务列表”窗口

  • 工具箱