Share via


使用 VSPackage 建立延伸模組

本逐步解說說明如何建立 VSIX 專案並新增 VSPackage 專案項目。 我們將使用 VSPackage 來取得 UI Shell 服務,以顯示訊息方塊。

建立 VSPackage

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

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

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

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

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

載入 VSPackage

此時,延伸模組不會載入,因為沒有任何會導致它載入的動作。 當您與其 UI 互動時,通常可以載入延伸模組 (按一下功能表命令、開啟工具視窗),或指定 VSPackage 應該載入特定 UI 內容。 如需載入 VSPackage 和 UI 內容的詳細資訊,請參閱載入 VSPackage。 在此程序中,我們將說明如何在開啟方案時載入 VSPackage。

  1. 開啟 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
    
  2. 讓我們新增一則告訴我們 VSPackage 已載入的訊息。 我們使用 VSPackage 的 Initialize() 方法來執行這項操作,因為您只能在 VSPackage 定位之後取得 Visual Studio 服務。 (如需取得服務的詳細資訊,請參閱如何:取得服務。) 將 FirstPackageInitialize() 方法取代為取得 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));
    }
    
  3. 建置此專案並開始偵錯。 隨即出現實驗執行個體。

  4. 在實驗執行個體中開啟一個方案。 您應該會看到訊息方塊,指出「First Package 位於 Initialize() 內」