Partager via


Comment : Stigmatisez un VSPackage (c# et Visual Basic)

Pour afficher dans la boîte de dialogue de À propos de et l'écran de démarrage, VSPackages doit implémenter l'interface d' IVsInstalledProduct . Cela fournit les informations suivantes dans Visual Studio:

  • Nom

  • ID, tel que l'interface série ou le numéro de version

  • Information

  • icône de logo

Le code suivant est de Exemples d'extensibilité Visual Studio.

pour implémenter l'interface d'IVsInstalledProduct

  1. ajoutez l'attribut d' InstalledProductRegistrationAttribute à la classe qui implémente le VSPackage. cette classe doit dériver d' Package et d' 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
    

    Premier argument, UseInterface, de l'attribut d' InstalledProductRegistrationAttribute indique Visual Studio d'utiliser IVsInstalledProduct pour obtenir des informations sur le produit, au lieu de la clé de Registre d'InstalledProducts. Les arguments restants sélectionnent des ressources de type chaîne pour afficher le nom de produit, les informations, et l'ID, respectivement. Toutefois, étant donné que le premier argument est true, les arguments restants sont null.

  2. Cliquez avec le bouton droit sur IVsInstalledProduct, pointez sur Implémenter l'interface, puis cliquez sur Implémenter l'interface.

  3. Implémentez IVsInstalledProduct à l'aide de le code suivant.

    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 appelle ces méthodes pour obtenir des informations pour stigmatiser le VSPackage. la méthode de GetResourceString est utilisée pour localiser ces informations.

    Notes

    Les commentaires de code sont supprimés par souci de concision.vous pouvez les rechercher dans Exemples d'extensibilité Visual Studio.

Pour stocker les chaînes de les informations de produit

  1. Double-cliquez sur le fichier de ressources .resx associé au VSPackage.

    l'éditeur de ressources s'ouvre.

  2. Rechercher ou ajoutez le nom de produit, les informations, et ID.

    Les chaînes de ressources suivantes sont de Exemples d'extensibilité Visual Studio.

    • @101
      Écran de démarrage et aide de package sur le nom officiel (c#).

    • @102
      Ce package montre comment afficher du texte et à l'image de l'écran de démarrage et d'aide sur.

    • @104
      8.0

  3. Sélectionnez et remplacez ces informations que vous le souhaitez.

Pour gérer les icônes et les bitmaps de produit

  1. Ajoutez les bitmaps et les icônes du projet en tant que ressources du projet.

    Pour plus d'informations, consultez Adding and Editing Resources.

  2. Fermez l'éditeur de ressources et rouvrez le fichier .resx dans XML ou un éditeur de texte.

    Notes

    L'éditeur de ressources ne prend pas en charge les assignation des identificateurs de ressource aux éléments autres que des chaînes.

  3. Rechercher ou ajoutez l'icône et les ressources bitmap au fichier .resx. les ressources suivantes sont de Exemples d'extensibilité 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>
    

Pour tester la boîte de dialogue about et les écrans de démarrage

Voir aussi

Autres ressources

Personnalisation d'un VSPackage