共用方式為


使用功能表命令創建擴充功能

本教學示範如何建立具有啟動記事本功能的選單命令的擴充功能。

建立功能表命令

  1. 建立名為 FirstMenuCommand的 VSIX 專案。 您可以搜尋 「vsix」,在 [新增專案] 對話框中找到 VSIX 項目範本。

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

  3. 建置項目並開始偵錯。

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

  4. 在實驗實例中,開啟 擴充功能>[管理擴充功能] 視窗。 您應該在這裡看到 FirstMenuCommand 延伸模組。 (如果您在 Visual Studio 的工作實例中開啟 管理延伸模組,則不會看到 FirstMenuCommand]。

現在,移至實驗實例中的 [工具] 功能表。 您應該會看到 執行 FirstCommand 命令。 命令會顯示一個訊息框,內容為 FirstCommand Inside 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. 現在試試看。當您開始偵錯專案,然後按一下 [Tools>Invoke 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 時,他們會在 Tools>Extensions 和 Updates中找到 FirstMenuCommand 延伸模組。 他們也可以移至 延伸模組和更新 卸載或停用擴充功能。

後續步驟

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

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

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

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

    3. 將功能表快捷方式新增至命令:將鍵盤快捷方式系結至功能表項

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

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

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

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

    其他類型的延伸模組需要更多工作,例如建立新類型的專案(擴充專案),或建立新類型的編輯器(建立自定義編輯器和設計工具)。