Partager via


Procédure pas - à - pas : créer un VSPackage (partie de 4)

Vous pouvez ajouter des fonctionnalités à Visual Studio en créant un VSPackage. Étant donné qu'un VSPackage est un module de logiciels, il peut être distribué à d'autres personnes afin qu'ils puissent étendre Visual Studio sur leur propre ordinateur.

À l'aide de le modèle de package Visual Studio, vous pouvez effectuer un projet qui possède déjà les fichiers sources et les fichiers de configuration qui sont requis pour créer un VSPackage. Le projet inclut un fichier qui définit une classe que vous nommez lorsque vous créez le projet. Cette classe, dérivée d'une classe managée du package (MPF) nommé Package, inclut des attributs qui déterminent le VSPackage doit s'exécuter dans Visual Studio. La classe du package contient le code d'initialisation et tout autre code tel que les gestionnaires de commande de menu. cette classe est la base du VSPackage.

Cette procédure pas - à - pas explique comment créer un VSPackage et le personnaliser, comme suit :

  • Créez un VSPackage à l'aide de le modèle de package.

  • Implémentez un gestionnaire de commandes de menu.

  • ajoutez un raccourci clavier.

  • Ajoutez des informations personnalisées à l'écran de démarrage Visual Studio et à la boîte de dialogue de À propos de .

Cette procédure pas - à - pas fait partie d'une série de procédures qui explique comment étendre l'environnement de développement intégré Visual (IDE) Studio. Pour plus d'informations, consultez Procédures pas - à - pas pour personnaliser Visual Studio à l'aide de les VSPackages.

Composants requis

Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010.

Notes

Pour plus d'informations sur le kit de développement Visual Studio, consultez Étendre la présentation de Visual Studio.Pour savoir comment télécharger le kit de développement Visual Studio, consultez Visual Studio Extensibility Developer Center sur le site Web MSDN.

Emplacements de modèle pour le modèle de package Visual Studio

Le modèle de package Visual Studio se trouve dans ces emplacements dans la boîte de dialogue de Nouveau projet :

  1. Sous l'extensibilité Visual Basic. Le langage par défaut du projet est en Visual Basic.

  2. Sous l'extensibilité c#. Le langage par défaut du projet est c#.

  3. Sous d'autres projets contenus l'extensibilité. Le langage par défaut du projet est en C++.

Créer un VSPackage à l'aide de le modèle de package

Cette section indique comment créer une solution d'un VSPackage dans Visual Studio.

Pour créer une solution de base d'un VSPackage

  1. Créez un VSPackage à l'aide de le modèle de projet de package Visual Studio.

  2. Sur la page d'accueil, cliquez sur Suivant.

  3. Dans la page de Sélectionner un langage de programmation , sélectionnez Visual C# ou Visual Basic, sélectionnez générez un nouveau fichier de clé pour signer l'assembly, puis cliquez sur Suivant.

  4. Dans la page de Les informations de base d'un VSPackage , dans la zone nom d'un VSPackage, le type FirstPackage, et reçoivent les paramètres par défaut restants. Le nom de la société et le nom du projet sont combinés pour créer l'espace de noms pour le package.

    Informations sur le package VS de base

    Cliquez sur Suivant.

  5. Dans la page de Sélectionnez les options d'un VSPackage , sélectionnez Commande de menu, puis cliquez sur Suivant.

  6. Sur la page d' options de commande , dans la zone de nom de la commande , tapez première commande. (Ce texte apparaît dans le menu de Visual Studio.) Dans la zone d' ID de commande , tapez cmdidFirstCommand. (Cet identificateur sera utilisée dans le code pour identifier la commande.)

    Boîte de dialogue Options de la commande

    Cliquez sur Suivant.

  7. Dans la page de sélectionnez les options de test , cliquez sur Terminer.

    Le modèle crée un projet Visual Studio dans laquelle la fonctionnalité de base. Vous pouvez l'essayer en appuyant sur F5, qui génère le projet et l'ouvre dans une autre instance de Visual Studio en mode débogage (également appelé la génération expérimentale de Visual Studio).

    Notes

    Lorsque vous générez le projet la première fois, Visual Studio peut sembler cesser de répondre et vous pouvez recevoir un message que Visual Studio est occupé.Passez simplement le message et attendre que Visual Studio s'ouvre et le package est chargé.

  8. Dans la génération expérimentale, dans le menu d' Outils , une commande nommée première commande doit s'afficher. Notez que la première commande est le nom que vous avez tapé dans la page d' options de commande du modèle.

  9. Cliquez sur première commande. Un message similaire à la suivante doit s'afficher.

    Message de la première commande

Révision du gestionnaire de commande de menu

Le message qui s'affiche lorsque vous cliquez sur première commande dans le menu d' Outils provient de code dans le gestionnaire pour la commande de menu. Ce gestionnaire dans le fichier de FirstPackage.cs ou de FirstPackage.vb.

Pour tester le gestionnaire d'élément de menu

  1. dans Explorateur de solutions, ouvrez FirstPackage.cs ou FirstPackage.vb.

  2. recherchez la classe de FirstPackage. la classe de FirstPackage est définie comme suit.

    Public NotInheritable Class FirstPackage
        Inherits Package
    
    public sealed class FirstPackage : Package
    

    Notez que la classe est dérivée de la classe Package de MPF.

  3. Rechercher du code pour le gestionnaire de menu, qui est implémentée par la méthode MenuItemCallback. La fonction gestionnaire de menu est une méthode type de gestionnaire d'événements Windows Forms.

    Private Sub MenuItemCallback(ByVal sender As Object, ByVal e As EventArgs)
            ' Show a Message Box to prove we were here
            Dim uiShell As IVsUIShell = TryCast(GetService(GetType(SVsUIShell)), IVsUIShell)
            Dim clsid As Guid = Guid.Empty
            Dim result As Integer
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, clsid, "FirstPackage", String.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", Me.GetType().Name), String.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result))
        End Sub
    
    private void MenuItemCallback(object sender, EventArgs e)
    {
        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}.MenuItemCallback()", this.ToString()),
                string.Empty, 0,
                OLEMSGBUTTON.OLEMSGBUTTON_OK,
                OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                OLEMSGICON.OLEMSGICON_INFO,
                0, out result));
    }
    

ajouter un raccourci clavier

par défaut, les commandes de menu qui sont créées par le modèle de package n'ont pas un raccourci clavier. Vous pouvez en ajouter une à la première commande.

pour ajouter un raccourci clavier par défaut

  1. dans Explorateur de solutions, ouvrez First.vsct.

    Le fichier s'ouvre dans l'éditeur XML dans Visual Studio.

  2. Recherchez la fin de l'élément de commandes, qui est indiqué par la balise d' </Commands> .

  3. ajoutez les lignes suivantes entre la balise d' </Commands> et la balise d' <Symbols> .

    <KeyBindings>
      <KeyBinding guid="guidFirstCmdSet" id="cmdidFirstCommand"    editor="guidVSStd97" key1="M" mod1="(control shift)"/>
    </KeyBindings>
    

    Cet élément de KeyBinding comporte plusieurs attributs. Les attributs d' guid et d' id déterminent quelle commande reçoit le raccourci clavier. Le GUID est un GUID du VSPackage, et l'identificateur est l'identificateur de commande que vous avez tapé lorsque vous avez exécuté le modèle. Les symboles sont définis dans la section de symboles, comme suit.

    <Symbols>
      <GuidSymbol name="guidFirstCmdSet"     value="{600efde8-1f5e-4df5-bc22-06074a411975}">
        <IDSymbol name="cmdidFirstCommand" value="0x0100" />
      </GuidSymbol>
    

    La valeur de l'attribut d' editor est un GUID qui représente le contexte dans lequel le raccourci clavier sera disponible. Dans Visual Studio, la liaison d'un raccourci clavier à une commande peut se limiter les fenêtres particulières ou être rendue globale (autrement dit, disponible partout dans Visual Studio). par exemple, dans un éditeur de texte, CTRL+I peut exécuter la commande incrémentielle de recherche, mais dans Explorateur de solutions, CTRL+I n'a aucune combinaison de touches ; par conséquent, CTRL+I est uniquement disponible dans l'éditeur de texte. Dans cette procédure pas - à - pas, le raccourci clavier est conçu pour être global. par conséquent, la valeur de l'attribut d'éditeur est guidVSStd97, qui est la valeur qui rend un raccourci clavier global.

    key1 et mod1 attributs l'ensemble de la touche et le modificateur qui doivent être appuyés sur pour activer le raccourci clavier. Pour la valeur de key1, toutes les touches du clavier sont disponibles sous forme de jeton, par exemple, « M » pour la lettre M et « VK_F5 » pour la touche de fonction F5. La valeur de mod1 peut être « ALT », « contrôle », ou « déplacez », séparées par des espaces, dans toute combinaison.

    Dans cette procédure pas - à - pas, la valeur de key1 est M et la valeur de mod1 est (Control Shift). Par conséquent, le raccourci clavier est CTRL+MAJ+M.

  4. Dans le menu Déboguer, cliquez sur Exécuter sans débogage.

    Dans la génération expérimentale de Visual Studio, dans le menu d' Outils , CTRL+MAJ+M doit être affiché en regard de première commande.

    Première commande avec raccourci

  5. Appuyez sur CTRL+MAJ+M. Vous devez voir le même message qui s'affiche lorsque vous cliquez sur première commande dans le menu d' Outils .

    Pour plus d'informations sur les fichiers de .vsct, consultez Référence du schéma XML VSCT.

Les informations personnalisées à ajouter à la boîte de dialogue about

Vous pouvez inclure une icône et les informations relatives à votre package dans la boîte de dialogue de À propos de . Pour ce faire, vous devez apporter les modifications suivantes à la solution :

  • Modifiez les arguments d' InstalledProductRegistrationAttribute pour la classe principale d'un VSPackage.

  • Implémentez l'interface d' IVsInstalledProduct pour la classe principale d'un VSPackage.

  • Ajoutez une icône dans le dossier ressources.

  • référencez l'icône dans le fichier de VSPackage.resx.

La classe principale d'un VSPackage utilise l'attribut d'InstalledProductRegistration pour spécifier où trouver des informations pour la boîte de dialogue de À propos de . Dans cette procédure pas - à - pas, la classe principale est nommée FirstPackage, et elle peut être modifiée en ouvrant FirstPackage.cs ou FirstPackage.vb.

le nouveau modèle de projet génère l'attribut suivant d'InstalledProductRegistration.

<InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID := 400)>
[InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID = 400)]

Les ID « #110 » et « #112 » de ressources font référence aux ressources de type chaîne définies dans le fichier de VSPackage.resx, comme suit :

  • 110 fait référence à FirstPackage

  • 112 fait référence aux informations sur mon VSPackage

IconResourceID 400 fait référence au fichier de Package.ico dans le dossier ressources, défini dans le fichier de VSPackage.resx comme suit.

<data name="400" type="System.Resources.ResXFileRef,
  System.Windows.Forms">
  <value>Resources\Package.ico;System.Drawing.Icon, System.Drawing,
    Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a
  </value>
</data>

Pour personnaliser la boîte de dialogue de À propos de , modifiez le premier argument de l'attribut d'InstalledProductRegistration à true, afin que votre VSPackage puisse fournir des informations appropriées via l'interface d'IVsInstalledProduct.

Pour ajouter des informations personnalisées à l'écran de démarrage et à environ la boîte de dialogue

  1. FirstPackage.cs ou FirstPackage.vb ouverts, recherchez l'attribut d'InstalledProductRegistration, et modifier ses arguments comme suit.

    InstalledProductRegistration(True, Nothing, Nothing, Nothing)
    
    [InstalledProductRegistration(true, null, null, null)]
    
  2. dérivez la classe de FirstPackage du package et de l'IVsInstalledProduct.

    Public NotInheritable Class FirstPackage
        Inherits Package
        Implements IVsInstalledProduct
    
    public sealed class FirstPackage : Package, IVsInstalledProduct
    
  3. implémentez implicitement l'interface d'IVsInstalledProduct. Cette étape est différente pour c# et Visual Basic.

    1. En c#, implémentez implicitement l'interface d'IVsInstalledProduct en pointant la souris IVsInstalledProduct. Lorsque le menu Intellisense apparaît, cliquez sur le premier élément.

      Implémenter l'interface

      De cette façon ajoute les méthodes stub suivant à la classe de FirstPackage. Dans une étape ultérieure, vous compléterez les méthodes.

      public int IdBmpSplash(out uint pIdBmp)
      {
          throw new NotImplementedException();
      }
      public int IdIcoLogoForAboutbox(out uint pIdIco)
      {
          throw new NotImplementedException();
      }
      public int OfficialName(out string pbstrName)
      {
          throw new NotImplementedException();
      }
      public int ProductDetails(out string pbstrProductDetails)
      {
          throw new NotImplementedException();
      }
      public int ProductID(out string pbstrPID)
      {
          throw new NotImplementedException();
      }
      
    2. En Visual Basic, ajoutez le code suivant à la fin de la classe de FirstPackage. Dans une étape ultérieure, vous compléterez les méthodes.

      Function ProductDetails( _
          <OutAttribute()> ByRef pbstrProductDetails As String) _
      As Integer
      
      End Function
      
      Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdBmpSplash
      
      End Function
      
      Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdIcoLogoForAboutbox
      
      End Function
      
      Public Function OfficialName(ByRef pbstrName As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.OfficialName
      
      End Function
      
      Public Function ProductID(ByRef pbstrPID As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.ProductID
      
      End Function
      
  4. copiez Icon.ico de <Visual Studio SDK installation path> \Common7\IDE\NewFileItems et collez-le dans le dossier de ressources dans la solution de package.

  5. Dans Explorateur de solutions, cliquez avec le bouton droit sur le dossier ressources, pointez sur Ajouter, puis cliquez sur Élément existant. Définissez le filtre de type de fichier à tous les fichiers (*.*) puis ajoutez Icon.ico.

  6. Dans Explorateur de solutions, cliquez avec le bouton droit sur VSPackage.resx, puis cliquez sur Ouvrir avec. sélectionnez Éditeur XML et cliquez sur OK pour ouvrir le fichier dans l'éditeur XML.

  7. Ajoutez les lignes suivantes juste avant la balise à </root> .

    <data name="500" type="System.Resources.ResXFileRef,   System.Windows.Forms">
      <value>Resources\GenericPackage.ico;    System.Drawing.Icon, System.Drawing, Version=2.0.0.0,    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
      </value>
    </data>
    

    Ce balisage déclarent Icon.ico comme ID de ressource 500.

  8. Dans FirstPackage.cs ou FirstPackage.vb, remplacez l'implémentation de l'interface d'IVsInstalledProduct à l'aide de le code suivant.

    Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer Implements IVsInstalledProduct.ProductDetails
        pbstrProductDetails = "This is my package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdBmpSplash(ByRef pIdBmp As UInteger) _
    As Integer Implements IVsInstalledProduct.IdBmpSplash
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) _
    As Integer Implements IVsInstalledProduct.IdIcoLogoForAboutbox
        pIdIco = 600
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function OfficialName(ByRef pbstrName As String) _
    As Integer Implements IVsInstalledProduct.OfficialName
        pbstrName = "My Package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function ProductID(ByRef pbstrPID As String) _
    As Integer Implements IVsInstalledProduct.ProductID
        pbstrPID = "My Package ID"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    public int IdBmpSplash(out uint pIdBmp) 
    { 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int IdIcoLogoForAboutbox(out uint pIdIco) 
    { 
        pIdIco = 500; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int OfficialName(out string pbstrName) 
    { 
        pbstrName = "My Package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductDetails(out string pbstrProductDetails) 
    { 
        pbstrProductDetails = "This is my package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductID(out string pbstrPID) 
    { 
        pbstrPID = "My Package ID"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    

    La deuxième méthode retourne l'ID de ressource pour l'icône. Les trois fonctions restantes retournent le nom, les détails du produit, et l'ID de produit, afin qu'elles apparaissent dans la boîte de dialogue de À propos de .

Vous pouvez tester les modifications en exécutant la procédure suivante.

Pour tester l'écran de démarrage et sur la personnalisation de boîte de dialogue

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le premier nœud de projet, puis cliquez sur Propriétés. Le concepteur d'applications s'affiche.

  2. Cliquez sur Débogage. Le volet d'options de débogage s'affiche.

  3. dans la zone d' Arguments de la ligne de commande , ajoutez le commutateur de /splash .

    Commutateur de démarrage de ligne de commande

  4. appuyez sur F5 pour ouvrir Visual Studio dans la génération expérimentale.

  5. Dans le menu d' Aide , cliquez sur Sur Microsoft Visual Studio.

    la boîte de dialogue de À propos de apparaît et affiche l'icône et le texte pour votre VSPackage.

    Boîte de dialogue À propos de

Quoi d'autre ?

Explorateur de solutions et Liste des tâches sont des exemples de fenêtres Outil. Dans Procédure pas - à - pas : créer une fenêtre Outil (partie de 4), vous pouvez créer une fenêtre Outil que les s'ancre dans Visual Studio et vous permet de lire des fichiers de musique.

Voir aussi

Concepts

Exemples d'extensibilité Visual Studio

Autres ressources

VSPackages

Personnalisation d'un VSPackage

VSPackage Load Keys

Reference.Package sample

Reference.Package sample