演练:将命令添加到解决方案资源管理器工具栏 (c#)

本演练演示如何将按钮添加到 Visual Studio 解决方案资源管理器 工具栏。

所有命令,在一个工具栏或在菜单上,是否由 Visual Studio视为按钮。 当单击按钮时,在命令处理程序的代码执行。 通常,相关命令进行分组生成一组。 菜单或工具栏作为组的容器。 优先级确定各指令在组中出现在菜单或工具栏上的命令。 可以在工具栏或菜单可以阻止按钮显示通过控制其可见性。 在 .vsct 文件的<VisibilityConstraints> 部分列出的命令于相关联的上下文仅显示。 可见性不能应用于组。

有关菜单的更多信息,工具栏命令和 .vsct 文件,请参见 命令、菜单和工具栏

备注

使用 XML 命令表 (.vsct) 文件而不是命令表配置 (.ctc) 文件定义菜单和命令如何显示在 Vspackage。有关更多信息,请参见 Visual Studio 命令 (表。Vsct) 文件

系统必备

若要采用本演练,您必须安装 Visual Studio SDK。

备注

有关 Visual Studio SDK 的更多信息,请参见扩展 Visual Studio 概述。若要查找有关中所列如何下载 Visual Studio SDK,请 Visual Studio Extensibility Developer Center 参见 MSDN 网站。

Visual Studio 包 " 项目模板的位置

Visual Studio 包 " 项目模板可在 新项目 对话框的三个位置:

  • Visual Basic 扩展性下。 该项的默认语言是 Visual Basic。

  • C# 扩展性下。 该项目的默认语言是 C#。

  • 其他项目类型扩展性下。 该项的默认语言是 C++。

创建包含一个菜单命令的 VSPackage

本节演练将演示如何使用 Visual Studio 包 " 项目模板创建支持菜单命令的 VSPackage。

创建 SolutionToolbar VSPackage

  1. 创建名为 SolutionToolbar的 VSPackage。 有关更多信息,请参见 演练:使用 Visual Studio 创建包模板的菜单命令

  2. 设置编程语言。 Visual C#,选择 " 菜单命令,设置命令名称。 工具栏按钮测试命令,并将命令 ID 设置为 cmdidTestCmd。

将按钮添加到解决方案资源管理器工具栏

本节演练将演示如何将按钮添加到 解决方案资源管理器 工具栏。 当单击按钮时,在回调方法中的代码运行。

将按钮添加到解决方案资源管理器工具栏

  1. 解决方案资源管理器,打开该对话框的双击 SolutionToolbar.vsct 在文本编辑器中。

  2. 在 <Symbols> 部分,名称以 “的 <GuidSymbol> 节点 CmdSet”包含由包模板生成的菜单组和命令。 添加一个 <IDSymbol> 元素添加到此节点声明将保存命令的组。

    <IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
    
  3. 在 <Groups> 部分,在现有组项之后,定义在上一步骤中声明的新组。

    <Group guid="guidSolutionToolbarCmdSet"
           id="SolutionToolbarGroup" priority="0xF000">
      <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
    </Group>
    

    设置父 GUID: ID 匹配来 guidSHLMainMenu ,并 IDM_VS_TOOL_PROJWIN 在 解决方案资源管理器 工具栏上将此组放在,,并将一个高优先级值在其他命令组后将其放在

  4. 在 <Buttons> 部分,更改生成的 <Button> 项的父 ID 反映您在上一步中定义的组。 已修改的 <Button> 元素应类似于以下标记。

    <Button guid="guidSolutionToolbarCmdSet" id="cmdidTestCmd" priority="0x0100" type="Button">
      <Parent guid="guidSolutionToolbarCmdSet" id="SolutionToolbarGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <Strings>
        <CommandName>cmdidTestCmd</CommandName>
        <ButtonText>Toolbar Button Test Command</ButtonText>
      </Strings>
    </Button>
    
  5. 生成解决方案并检查错误。

  6. 按 F5 打开在第二个窗口的 Visual Studio 的实验性生成。

    解决方案资源管理器 工具栏应在现有按钮右侧显示新的命令按钮。 按钮图标位于正方形的数字 1。

  7. 单击新按钮。

    使用消息应显示的对话框中, “于 Microsoft.SolutionToolbar.SolutionToolbarPackage.MenuItemCallback()”。

控件按钮的可见性

本节演练将演示如何控制一个按钮的可见性工具栏上的。 通过设置一个或多个项目的上下文在 SolutionToolbar.vsct 文件的 <VisibilityConstraints> 节中,您限制一个按钮仅项目或项目打开的。

显示按钮,当一个或多个项目处于打开状态

  1. 如果尚未关闭 Visual Studio 的实验性生成,关闭当前它。

  2. 在 SolutionToolbar.vsct 的 <Buttons> 节中,添加两个命令标志向现有 <Button> 元素,在 <Strings> 和 <Icons> 标记之间。

    <CommandFlag>DefaultInvisible</CommandFlag>
    <CommandFlag>DynamicVisibility</CommandFlag>
    

    必须设置 DefaultInvisible 和 DynamicVisibility 标志,以便在 <VisibilityConstraints> 部分的项会生效。

  3. 创建具有两 <VisibilityItem> 项的一个 <VisibilityConstraints> 部分。 放在结束 </Commands> 标记后的新部件。

    <VisibilityConstraints>
      <VisibilityItem guid="guidSolutionToolbarCmdSet"
            id="cmdidTestCmd"
            context="UICONTEXT_SolutionHasSingleProject" />
      <VisibilityItem guid="guidSolutionToolbarCmdSet"
            id="cmdidTestCmd"
            context="UICONTEXT_SolutionHasMultipleProjects" />
    </VisibilityConstraints>
    

    每个可见性项表示指定的按钮显示的行为。 若要将多个条件,必须创建同一个按钮的多路访问。

  4. 在**“生成”菜单上,单击“重新生成解决方案”**。 您必须重新生成解决方案以查看菜单更改。

  5. 按 F5 打开 Visual Studio 的实验性生成。

    解决方案资源管理器 工具栏不包含数字 1. 的按钮。

  6. 打开一个包含项目或多个项目的任何解决方案。

    将数字 1 的按钮显示在工具栏中现有的按钮右侧。

  7. 在**“文件”菜单上,单击“关闭解决方案”**。 按钮从工具栏消失。

按钮的可见性由 Visual Studio 控件,直到 VSPackage 加载。 在 VSPackage 加载后,该按钮的可见性由 VSPackage 控件的。 有关更多信息,请参见 如何:在 Vspackage (c#) 创建和处理命令

请参见

其他资源

命令、菜单和工具栏

命令、菜单和工具栏的演练