共用方式為


How to: 品牌 VSPackage (C# 和 Visual Basic)

若要顯示在有關對話方塊並啟動顯示畫面,就必須實作 VSPackages IVsInstalledProduct介面。 這會提供下列資訊,以Visual Studio:

  • 名稱

  • 識別碼,如序列連接埠或版本號碼

  • 資訊

  • 標誌的圖示

下列程式碼是從Visual Studio 的擴充性範例

若要實作 IVsInstalledProduct 介面

  1. 新增InstalledProductRegistrationAttribute屬性設定為實作 VSPackage 的類別。 這個類別必須衍生自兩者PackageIVsInstalledProduct

    <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
    

    第一個引數中, UseInterfaceInstalledProductRegistrationAttribute屬性可以告訴我們Visual Studio使用IVsInstalledProduct以取得產品資訊,而不是 InstalledProducts 登錄機碼。 其餘的引數選取來分別顯示產品名稱]、 [詳細資料] 及 [識別碼的字串資源。 不過,因為第一個引數是true,其餘的引數是null。

  2. 以滑鼠右鍵按一下IVsInstalledProduct,指到實作介面,然後按一下 [ 實作介面

  3. 實作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 的擴充性範例

若要維護產品資訊的字串

  1. 按兩下 VSPackage 相關聯的資源.resx 檔案。

    資源編輯器隨即開啟。

  2. 尋找或加入產品名稱資訊,和編號。

    下列的資源字串是來自Visual Studio 的擴充性範例

    • @101
      套件啟動顯示畫面和說明有關正式名稱 (C#)。

    • @102
      此套件會示範如何顯示文字和影像在開頭顯示畫面和相關說明。

    • @104
      8.0

  3. 選取並視需要編輯這項資訊。

若要維護產品的圖示和點陣圖

  1. 將點陣圖與圖示加入專案當做專案資源。

    如需詳細資訊,請參閱 Adding and Editing Resources

  2. 關閉資源編輯器並重新開啟在 XML 或文字編輯器中的.resx 檔案。

    注意事項注意事項

    資源編輯器不支援將識別碼指派給項目不是字串。

  3. 尋找或加入.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 商標