共用方式為


使用功能表命令建立延伸模組

本逐步解說說明如何使用可啟動記事本的功能表命令來建立延伸模組。

建立功能表命令

  1. 建立名為 FirstMenuCommand 的 VSIX 專案。 您可以在 [新增專案] 對話方塊中搜尋「vsix」來尋找 VSIX 專案範本。

  2. 當專案開啟時,新增名為「FirstCommand」的自訂命令項目範本。 在 [方案總管] 中,以滑鼠右鍵按一下專案節點,並選取 [新增]>[新增項目]。 在 [加入新項目] 對話方塊中,移至 [C# 項目]>[擴充性],然後選取 [命令]。 在視窗底部的 [名稱] 欄位中,將命令檔名變更為 FirstCommand.cs

  3. 建置此專案並開始偵錯。

    隨即出現 Visual Studio 實驗執行個體。 如需實驗執行個體的詳細資訊,請參閱實驗執行個體

  4. 在實驗執行個體中,開啟 [延伸模組]>[管理延伸模組] 視窗。 您應該會在這裡看到 FirstMenuCommand 延伸模組。 (如果您在 Visual Studio 的工作執行個體中開啟 [管理延伸模組],您不會看到 FirstMenuCommand)。

現在,移至實驗執行個體中的 [工具] 功能表。 您應該會看到 [叫用 FirstCommand] 命令。 此時,命令會顯示訊息方塊,指出「FirstCommand 位於 FirstMenuCommand.FirstCommand.MenuItemCallback() 內」。 在下一節中,我們將了解如何從此命令實際啟動記事本。

變更功能表命令處理常式

現在讓我們更新命令處理常式,以啟動記事本。

  1. 停止偵錯並返回 Visual Studio 的工作執行個體。 開啟 FirstCommand.cs 檔案,然後加入下列 using 陳述式:

    using System.Diagnostics;
    
  2. 尋找私用 FirstCommand 建構函式。 這是命令連結至命令服務以及指定命令處理常式的位置。 將命令處理常式的名稱變更為 StartNotepad,如下所示:

    private FirstCommand(AsyncPackage package, OleMenuCommandService commandService)
    {
        this.package = package ?? throw new ArgumentNullException(nameof(package));
        commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));
    
        CommandID menuCommandID = new CommandID(CommandSet, CommandId);
        // Change to StartNotepad handler.
        MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID);
        commandService.AddCommand(menuItem);
    }
    
  3. 移除 Execute 方法並新增StartNotepad 方法,這會啟動記事本:

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. 現在試試看。當您開始對專案進行偵錯並按一下 [工具]>[叫用 FirstCommand] 時,您應該會看到出現一個記事本執行個體。

    您可以使用 Process 類別的執行個體來執行任何可執行檔,而不只是記事本。 例如,使用 calc.exe 試試看。

清除實驗環境

如果您正在開發多個延伸模組,或只是要探索使用不同延伸模組程式碼版本的結果,實驗環境應當會停止運作。 在此情況下,您應該執行重設指令碼。 它稱為 [重設 Visual Studio 實驗執行個體],並隨附於 Visual Studio SDK。 此指令碼會從實驗環境移除延伸模組的所有參考,以便從頭開始。

您可以透過以下兩種方式之一存取此指令碼:

  1. 在桌面上,尋找 [重設 Visual Studio 實驗執行個體]

  2. 從命令列執行下列命令:

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
    
    

部署延伸模組

讓工具延伸模組依您想要的方式執行後,您現在可以考慮與朋友和同事分享。 很簡單,只要他們有安裝 Visual Studio 2015 就行了。 您只需要將您所建置的 .vsix 檔案傳送給他們就可以了。 (請務必在發行模式中建置。)

您可以在 FirstMenuCommand bin 目錄中找到此延伸模組的 .vsix 檔案。 具體來說,假設您已建置發行組態,它將位於:

<程式碼目錄>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

若要安裝延伸模組,您的朋友必須關閉所有開啟中的 Visual Studio 執行個體,然後按兩下 .vsix 檔案,這會啟動 VSIX 安裝程式。 這些檔案會複製到 %LocalAppData%\Microsoft\VisualStudio<版本>\Extensions 目錄。

當您的朋友再次啟動 Visual Studio 時,他們會在 [工具]>[延伸模組和更新] 中找到 FirstMenuCommand 延伸模組。 他們也可以移至 [延伸模組和更新] 解除安裝或停用延伸模組。

下一步

本逐步解說顯示的只是您可以使用 Visual Studio 延伸模組執行的一小部分。 以下是您可以使用 Visual Studio 延伸模組執行的其他 (相當容易) 事項的簡短清單:

  1. 您可以使用簡單的功能表指令執行更多動作:

    1. 新增您自己的圖示:將圖示新增至功能表命令

    2. 變更功能表命令的文字:變更功能表命令的文字

    3. 將功能表快速鍵新增至命令:將鍵盤快速鍵繫結至功能表項目

  2. 新增不同類型的命令、功能表和工具列:擴充功能表和命令

  3. 新增工具視窗並擴充內建的 Visual Studio 工具視窗:擴充和自訂工具視窗

  4. 將 IntelliSense、程式碼建議和其他功能新增至現有的程式碼編輯器:擴充編輯器和語言服務

  5. 將 [選項] 和 [屬性] 頁面及使用者設定新增至您的延伸模組:擴充屬性和 [屬性] 視窗,以及擴充使用者設定和選項

    其他類型的延伸模組需要多費一點力,例如建立新類型的專案 (擴充專案)、建立新類型的編輯器 (建立自訂編輯器和設計工具),或在隔離殼層中實作延伸模組:Visual Studio 隔離殼層