共用方式為


如何:公開捷徑功能表的增益集

.Visual Studio 增益集在 Visual Studio 2013 中已不適用。 您應該升級您的增益集至 VSPackage 擴展套件。 如需升級的詳細資訊,請參閱 常見問題集:將增益集轉換成 VSPackage 擴充功能

Visual Studio Automation 模式可將增益集命令放置在最上層工能表 (例如在 [工具] 功能表上) 的工作變得容易,您同時還能將命令加入至捷徑功能表和子功能表。

不過,若要這麼做,您必須使用 Microsoft Visual Studio 命令列物件模型,明確定義目標捷徑功能表和子功能表。 然後必須呼叫 Visual Studio AddControl 方法。

捷徑功能表與 Visual Studio 中的其他功能表類似,若要存取捷徑功能表,請指向下拉式功能表中的向下鍵,或在整合式開發環境 (IDE) 中以滑鼠右鍵按一下項目。

若要將命令加入至捷徑功能表 (或者任何功能表或工具列),您必須先知道它的命令名稱。 您可透過搜尋 [工具] 功能表之 [選項] 對話方塊中的 [鍵盤] 節點來尋找它。

下列程序會示範如何將增益集命令加入至 [工作清單] 的捷徑功能表。

注意事項注意事項

根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。使用 [一般開發設定] 開發了這些程序。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱Visual Studio 中的自訂開發設定

若要將增益集命令加入至捷徑功能表

  1. 在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。

  2. 在 [新增專案] 對話方塊中展開 [其他專案類型],按一下 [擴充性],然後按一下 [範本] 窗格中的 [Visual Studio 增益集]。

    將增益集命名為 ContextCmd,然後按一下 [確定] 以啟動 [Visual Studio 增益集精靈]。

  3. 藉由核取 [您要建立增益集的命令列 UI 嗎?] 方塊的方式,選取建立增益集之使用者介面 (UI) 的選項。

    如此一來會將某些 UI 程式碼加入至 OnConnection 方法。 同時也會加入 Exec 方法 (當有人按一下增益集命令時它會處理事件) 和 QueryStatus 方法 (提供增益集狀態的資訊)。

  4. 請將程式碼代換如下:

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Connect
    
        Implements IDTExtensibility2
        Implements IDTCommandTarget
    
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
    
        Dim cmdBarCtl As CommandBarControl
    
        Public Sub New()
        End Sub
    
        Public Sub OnConnection(ByVal application As Object, ByVal _
          connectMode As ext_ConnectMode, ByVal addInInst As Object, _
          ByRef custom As Array) Implements _
          IDTExtensibility2.OnConnection
            Dim cmd As Command
            Dim cmdBar As CommandBar
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
    
            Try
                If CType(ext_ConnectMode.ext_cm_AfterStartup Or _
                  ext_ConnectMode.ext_cm_Startup, Boolean) Then
                    ' If the command does not exist, add it.
                    If cmd Is Nothing Then
                        cmd = _applicationObject.Commands. _
                          AddNamedCommand(_addInInstance, _
                          "newCmd", "newCmd", "Runs the add-in.", _
                          True, 59, Nothing, _
                          vsCommandStatus.vsCommandStatusSupported _
                          Or vsCommandStatus.vsCommandStatusEnabled)
                    End If
    
                    ' Reference the Task List shortcut menu.
                    cmdBar = CType(_applicationObject. _
                      CommandBars.Item("Task List"), _
                      Microsoft.VisualStudio.CommandBars.CommandBar)
    
                    ' Add a command to the Task List's shortcut menu.
                    cmdBarCtl = CType(cmd.AddControl(cmdBar, _
                      cmdBar.Controls.Count + 1), _
                      Microsoft.VisualStudio.CommandBars. _
                      CommandBarControl)
                    cmdBarCtl.Caption = "A New Command"
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnDisconnection(ByVal disconnectMode As _
          ext_DisconnectMode, ByRef custom As Array) Implements _
          IDTExtensibility2.OnDisconnection
            Try
                ' Delete the command bar control from the 
                   ' shortcut menu.
                If Not (cmdBarCtl Is Nothing) Then
                    cmdBarCtl.Delete()
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
          IDTExtensibility2.OnAddInsUpdate
        End Sub
    
        Public Sub OnStartupComplete(ByRef custom As Array) Implements _
          IDTExtensibility2.OnStartupComplete
        End Sub
    
        Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
          IDTExtensibility2.OnBeginShutdown
        End Sub
    
        Public Sub QueryStatus(ByVal commandName As String, ByVal _
          neededText As vsCommandStatusTextWanted, ByRef status As _
          vsCommandStatus, ByRef commandText As Object) Implements _
          IDTCommandTarget.QueryStatus
            If commandName = "ContextCmd.Connect.newCmd" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            End If
        End Sub
    
        Public Sub Exec(ByVal commandName As String, ByVal _
          executeOption As vsCommandExecOption, ByRef varIn As _
          Object, ByRef varOut As Object, ByRef handled As Boolean) _
          Implements IDTCommandTarget.Exec
            handled = False
            If executeOption = vsCommandExecOption. _
              vsCommandExecOptionDoDefault Then
                If commandName = "ContextCmd.Connect.newCmd" Then
                    handled = True
                    System.Windows.Forms.MessageBox.Show("Add-in _
                      running...")
                End If
            End If
        End Sub
    End Class
    
  5. 加入在按一下 Exec 程序中的命令時,您想要執行的程式碼。

  6. 建置增益集然後執行它。

  7. 按一下 [檢視] 功能表上的 [工作清單] 以顯示 [工作清單]。

  8. 在 [工具] 功能表中,按一下 [增益集管理員]。

  9. 在 [增益集管理員] 中核取 ContextCmd 增益集旁邊的方塊以啟動它。

  10. 以滑鼠右鍵按一下 [工作清單]。

    [ContextCmd] 增益集命令會出現在捷徑功能表上。

請參閱

工作

如何:使用增益集管理員來控制增益集

如何:建立增益集

逐步解說:建立精靈

概念

在工具列和功能表上顯示增益集

增益集登錄

Automation 物件模型圖表

其他資源

建立增益集和精靈

Visual Studio 命令和參數