How to: 品牌 VSPackage (C# 和 Visual Basic)
若要顯示在有關對話方塊並啟動顯示畫面,就必須實作 VSPackages IVsInstalledProduct介面。 這會提供下列資訊,以Visual Studio:
名稱
識別碼,如序列連接埠或版本號碼
資訊
標誌的圖示
下列程式碼是從Visual Studio 的擴充性範例。
若要實作 IVsInstalledProduct 介面
新增InstalledProductRegistrationAttribute屬性設定為實作 VSPackage 的類別。 這個類別必須衍生自兩者Package和IVsInstalledProduct。
<InstalledProductRegistration(True, Nothing, Nothing, Nothing)> _ <DefaultRegistryRoot("Software\Microsoft\VisualStudio\8.0")> _ <PackageRegistration(UseManagedResourcesOnly:=True)> _ <Guid("EEE474A0-083B-4e9c-B453-F6FCCEDA2577")> _ Public NotInheritable Class PackageSplashHelpAboutLoadKey Inherits Package Implements IVsInstalledProduct
[InstalledProductRegistration(true, null, null, null)] [DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\8.0")] [PackageRegistration(UseManagedResourcesOnly = true)] [Guid("EEE474A0-083B-4e9c-B453-F6FCCEDA2577")] public sealed class PackageSplashHelpAboutLoadKey : Package, IVsInstalledProduct
第一個引數中, UseInterface的InstalledProductRegistrationAttribute屬性可以告訴我們Visual Studio使用IVsInstalledProduct以取得產品資訊,而不是 InstalledProducts 登錄機碼。 其餘的引數選取來分別顯示產品名稱]、 [詳細資料] 及 [識別碼的字串資源。 不過,因為第一個引數是true,其餘的引數是null。
以滑鼠右鍵按一下IVsInstalledProduct,指到實作介面,然後按一下 [ 實作介面。
實作IVsInstalledProduct藉由使用下列程式碼。
Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer _ Implements IVsInstalledProduct.IdBmpSplash pIdBmp = 300 Return VSConstants.S_OK End Function Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer _ Implements IVsInstalledProduct.IdIcoLogoForAboutbox pIdIco = 400 Return VSConstants.S_OK End Function Public Function OfficialName(ByRef pbstrName As String) As Integer _ Implements IVsInstalledProduct.OfficialName pbstrName = GetResourceString("@101") Return VSConstants.S_OK End Function Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer _ Implements IVsInstalledProduct.ProductDetails pbstrProductDetails = GetResourceString("@102") Return VSConstants.S_OK End Function Public Function ProductID(ByRef pbstrPID As String) As Integer _ Implements IVsInstalledProduct.ProductID pbstrPID = GetResourceString("@104") Return VSConstants.S_OK End Function Public Function GetResourceString(ByVal resourceName As String) As String Dim resourceValue As String Dim resourceManager As IVsResourceManager = DirectCast(GetService(GetType(SVsResourceManager)), IVsResourceManager) If resourceManager Is Nothing Then Throw New InvalidOperationException("Could not get SVsResourceManager service. Make sure that the package is sited before calling this method") End If Dim packageGuid As Guid = Me.[GetType]().GUID Dim hr As Integer = resourceManager.LoadResourceString(packageGuid, -1, resourceName, resourceValue) Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr) Return resourceValue End Function
public int IdBmpSplash(out uint pIdBmp) { pIdBmp = 300; return VSConstants.S_OK; } public int IdIcoLogoForAboutbox(out uint pIdIco) { pIdIco = 400; return VSConstants.S_OK; } public int OfficialName(out string pbstrName) { pbstrName = GetResourceString("@101"); return VSConstants.S_OK; } public int ProductDetails(out string pbstrProductDetails) { pbstrProductDetails = GetResourceString("@102"); return VSConstants.S_OK; } public int ProductID(out string pbstrPID) { pbstrPID = GetResourceString("@104"); return VSConstants.S_OK; } public string GetResourceString(string resourceName) { string resourceValue; IVsResourceManager resourceManager = (IVsResourceManager)GetService(typeof(SVsResourceManager)); if (resourceManager == null) { throw new InvalidOperationException( "Could not get SVsResourceManager service. Make sure that the package is sited before calling this method"); } Guid packageGuid = this.GetType().GUID; int hr = resourceManager.LoadResourceString( ref packageGuid, -1, resourceName, out resourceValue); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); return resourceValue; }
Visual Studio呼叫這些方法來取得商標 VSPackage 的資訊。 GetResourceString 方法用來將當地語系化的這項資訊。
注意事項 為了簡單起見,程式碼註解會被刪除。您可以找到它們在Visual Studio 的擴充性範例。
若要維護產品資訊的字串
按兩下 VSPackage 相關聯的資源.resx 檔案。
資源編輯器隨即開啟。
尋找或加入產品名稱資訊,和編號。
下列的資源字串是來自Visual Studio 的擴充性範例。
@101
套件啟動顯示畫面和說明有關正式名稱 (C#)。@102
此套件會示範如何顯示文字和影像在開頭顯示畫面和相關說明。@104
8.0
選取並視需要編輯這項資訊。
若要維護產品的圖示和點陣圖
將點陣圖與圖示加入專案當做專案資源。
如需詳細資訊,請參閱 Adding and Editing Resources。
關閉資源編輯器並重新開啟在 XML 或文字編輯器中的.resx 檔案。
注意事項 資源編輯器不支援將識別碼指派給項目不是字串。
尋找或加入.resx 檔中的圖示和點陣圖資源。 下列的資源是從Visual Studio 的擴充性範例。
<data name="300" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>GenericPackage.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> <data name="400" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>GenericPackage.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data>
若要測試的關於對話方塊] 方塊中,啟動顯示畫面
- 若要測試您的 VSPackage,請參閱How to: 說明關於和 Splash 過濾的測試。