使用 VSPackage 建立延伸模組
本逐步解說說明如何建立 VSIX 專案並新增 VSPackage 專案項目。 我們將使用 VSPackage 來取得 UI Shell 服務,以顯示訊息方塊。
建立 VSPackage
建立名為「FirstPackage」的 VSIX 專案。 您可以在 [新增專案] 對話方塊中搜尋「vsix」來尋找 VSIX 專案範本。
當專案開啟時,新增名為「FirstPackage」的 Visual Studio 套件專案範本。 在 [方案總管] 中,以滑鼠右鍵按一下專案節點,並選取 [新增]>[新增項目]。 在 [加入新項目] 對話方塊中,移至 [Visual C#]>[擴充性],然後選取 [Visual Studio 套件]。 在視窗底部的 [名稱] 欄位中,將命令檔名變更為 FirstPackage.cs。
建置此專案並開始偵錯。
隨即出現 Visual Studio 實驗執行個體。 如需實驗執行個體的詳細資訊,請參閱實驗執行個體。
在實驗執行個體中,開啟 [工具]>[延伸模組和更新] 視窗。 您應該會在這裡看到 FirstPackage 延伸模組。 (如果您在 Visual Studio 的工作執行個體中開啟 [延伸模組和更新],您不會看到 FirstPackage)。
載入 VSPackage
此時,延伸模組不會載入,因為沒有任何會導致它載入的動作。 當您與其 UI 互動時,通常可以載入延伸模組 (按一下功能表命令、開啟工具視窗),或指定 VSPackage 應該載入特定 UI 內容。 如需載入 VSPackage 和 UI 內容的詳細資訊,請參閱載入 VSPackage。 在此程序中,我們將說明如何在開啟方案時載入 VSPackage。
開啟 FirstPackage.cs 檔案。 尋找
FirstPackage
類別的宣告。 以下列屬性取代現有的屬性:[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideAutoLoad(UIContextGuids80.SolutionExists)] [Guid(FirstPackage.PackageGuidString)] public sealed class FirstPackage : Package
讓我們新增一則告訴我們 VSPackage 已載入的訊息。 我們使用 VSPackage 的
Initialize()
方法來執行這項操作,因為您只能在 VSPackage 定位之後取得 Visual Studio 服務。 (如需取得服務的詳細資訊,請參閱如何:取得服務。) 將FirstPackage
的Initialize()
方法取代為取得 SVsUIShell 服務的程式碼,取得 IVsUIShell 介面,以及呼叫其 ShowMessageBox 方法。protected override void Initialize() { base.Initialize(); IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); Guid clsid = Guid.Empty; int result; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox( 0, ref clsid, "FirstPackage", string.Format(CultureInfo.CurrentCulture, "Inside {0}.Initialize()", this.GetType().FullName), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result)); }
建置此專案並開始偵錯。 隨即出現實驗執行個體。
在實驗執行個體中開啟一個方案。 您應該會看到訊息方塊,指出「First Package 位於 Initialize() 內」。