使用功能表命令創建擴充功能
本教學示範如何建立具有啟動記事本功能的選單命令的擴充功能。
建立功能表命令
建立名為 FirstMenuCommand的 VSIX 專案。 您可以搜尋 「vsix」,在 [新增專案] 對話框中找到 VSIX 項目範本。
當項目開啟時,新增名為 FirstCommand的自定義命令項目範本。 在 [方案總管]中,以滑鼠右鍵點擊專案節點,然後選取 [新增>新增項目]。 在 [新增專案] 對話框中,移至 [C# 專案]>[擴充性],然後選取 [命令]。 在視窗底部的 [名稱] 欄位中,將命令檔案名變更為 FirstCommand.cs。
建置項目並開始偵錯。
Visual Studio 的實驗實例隨即出現。 如需實驗實例的詳細資訊,請參閱 實驗實例。
在實驗實例中,開啟 擴充功能>[管理擴充功能] 視窗。 您應該在這裡看到 FirstMenuCommand 延伸模組。 (如果您在 Visual Studio 的工作實例中開啟 管理延伸模組,則不會看到 FirstMenuCommand]。
現在,移至實驗實例中的 [工具] 功能表。 您應該會看到 執行 FirstCommand 命令。 命令會顯示一個訊息框,內容為 FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback()。 在下一節中,我們將瞭解如何從此命令實際啟動記事本。
變更功能表命令處理程式
現在讓我們更新命令處理程式以啟動記事本。
停止偵錯並返回Visual Studio的工作實例。 開啟 FirstCommand.cs 檔案,並新增下列 using 語句:
using System.Diagnostics;
尋找私有 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); }
移除
Execute
方法,並新增StartNotepad
方法,這只會啟動記事本:private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }
現在試試看。當您開始偵錯專案,然後按一下 [Tools>Invoke FirstCommand],您應該會看到 [記事本] 的實例出現。
您可以使用 Process 類別的實例來執行任何可執行檔,而不只是記事本。 例如,請嘗試使用
calc.exe
。
清除實驗環境
如果您正在開發多個延伸模組,或只是使用不同版本的延伸模組程序代碼探索結果,實驗環境可能會停止運作。 在此情況下,您應該執行重設腳本。 稱為 重置 Visual Studio 實驗實例,並作為 Visual Studio SDK 的一部分附帶提供。 此腳本會從實驗環境移除延伸模組的所有參考,以便從頭開始。
您可以使用下列兩種方式之一來取得此文稿:
從桌面尋找 重設 Visual Studio 實驗實例。
從命令列執行下列命令:
<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 延伸模組執行的其他(相當容易)事項的簡短清單:
您可以使用簡單的選單指令執行更多動作:
新增您自己的圖示:將圖示新增至功能表命令
變更功能表命令的文字:變更功能表命令的文字
將功能表快捷方式新增至命令:將鍵盤快捷方式系結至功能表項
新增不同類型的命令、功能表和工具列:擴充功能表和命令
新增工具視窗並擴充內建的 Visual Studio 工具視窗:擴充和自定義工具視窗
將 IntelliSense、程式代碼建議和其他功能新增至現有的程式代碼編輯器:擴充編輯器和語言服務
將 [選項] 和 [屬性] 頁面和使用者設定新增至您的延伸模組:[擴充屬性] 和 [屬性] 視窗 和 [擴充使用者設定和選項]
其他類型的延伸模組需要更多工作,例如建立新類型的專案(擴充專案),或建立新類型的編輯器(建立自定義編輯器和設計工具)。