使用 VSPackage 建立擴充功能
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
本逐步解說會示範如何建立 VSIX 專案,並加入 VSPackage 專案項目。 我們將取得以顯示訊息方塊的 UI 殼層服務使用 VSPackage。
必要條件
啟動 Visual Studio 2015 中,您未安裝 Visual Studio SDK 從 「 下載中心 」。 它是 Visual Studio 安裝程式的選用功能。 您也可以在稍後安裝 VS SDK。 如需詳細資訊,請參閱安裝 Visual Studio SDK。
建立 VSPackage
建立 VSIX 專案,名為FirstPackage。 您可以找到 VSIX 專案範本,在新的專案下的對話方塊Visual C# / 擴充性。
專案開啟時,加入名為的 Visual Studio 封裝項目範本FirstPackage。 在方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取加入 / 新的項目。 在加入新項目] 對話方塊中,移至Visual C# / 擴充性,然後選取Visual Studio 套件。 在名稱視窗的底部欄位中,將命令檔名稱變更為FirstPackage.cs。
建置此專案並開始偵錯。
Visual Studio 的實驗執行個體隨即出現。 如需詳細的實驗執行個體的詳細資訊,請參閱實驗執行個體。
在實驗執行個體中,開啟工具 / 擴充功能和更新視窗。 您應該會看到FirstPackage這裡延伸模組。 (如果您開啟擴充功能和更新在 Visual Studio 的工作執行個體,不會看到FirstPackage)。
載入 VSPackage
此時延伸模組未載入,因為其中沒有任何會導致它載入。 (按一下功能表命令,開啟 [工具] 視窗),其 ui 或藉由指定特定 UI 的內容中,應該載入 VSPackage 互動時,您通常可以載入擴充功能。 如需載入 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 (FirstPackageGuids.PackageGuidString)] public sealed class FirstPackage : Package
讓我們加入訊息,讓我們知道已載入 VSPackage。 我們使用 VSPackage initialize () 方法,這樣做,因為 VSPackage 已決定位置之後,才可以取得 Visual Studio 服務。 (如需取得服務的詳細資訊,請參閱How to︰ 取得服務。)使用取得的程式碼取代 initialize () 方法 FirstPackage 的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)); }
建置此專案並開始偵錯。 實驗執行個體隨即出現。
在實驗執行個體中開啟方案。 您應該會看到訊息方塊,指出第一個封裝內 initialize ()。