Créer une extension avec un VSPackage

Cette procédure pas à pas vous montre comment créer un projet VSIX et ajouter un élément de projet VSPackage. Nous allons utiliser VSPackage pour obtenir le service UI Shell afin d’afficher une boîte de message.

Créer un VSPackage

  1. Créez un projet VSIX nommé FirstPackage. Vous trouverez le modèle de projet VSIX dans la boîte de dialogue Nouveau projet en recherchant « vsix ».

  2. Lorsque le projet s’ouvre, ajoutez un modèle d’élément de package Visual Studio nommé FirstPackage. Dans le Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Ajouter>un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément, accédez à Visual C#>Extensibilité et sélectionnez Package Visual Studio. Dans le champ Nom en bas de la fenêtre, remplacez le nom du fichier de commande par FirstPackage.cs.

  3. Générez le projet et commencez le débogage.

    L’instance expérimentale de Visual Studio s’affiche. Pour plus d’informations sur l’instance expérimentale, consultez l’instance expérimentale.

  4. Dans l’instance expérimentale, ouvrez la fenêtre Extensions d’outils>et Mises à jour. Vous devez voir l’extension FirstPackage ici. (Si vous ouvrez Extensions et Mises à jour dans votre instance de travail de Visual Studio, vous ne verrez pas FirstPackage).

Charger le VSPackage

À ce stade, l’extension ne se charge pas, car il n’y a rien qui l’entraîne à charger. Vous pouvez généralement charger une extension lorsque vous interagissez avec son interface utilisateur (en cliquant sur une commande de menu, en ouvrant une fenêtre d’outil) ou en spécifiant que le VSPackage doit être chargé dans un contexte d’interface utilisateur spécifique. Pour plus d’informations sur le chargement de vsPackages et de contextes d’interface utilisateur, consultez Chargement de VSPackages. Pour cette procédure, nous allons vous montrer comment charger un VSPackage lorsqu’une solution est ouverte.

  1. Ouvrez le fichier FirstPackage.cs . Recherchez la déclaration de la FirstPackage classe. Remplacez les attributs existants par les attributs suivants :

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
    [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
    [Guid(FirstPackage.PackageGuidString)]
    public sealed class FirstPackage : Package
    
  2. Nous allons ajouter un message qui nous indique que vsPackage a chargé. Nous utilisons la méthode de Initialize() VSPackage pour effectuer cette opération, car vous pouvez obtenir des services Visual Studio uniquement une fois que vsPackage a été sitené. (Pour plus d’informations sur l’obtention de services, consultez Guide pratique pour obtenir un service.) Remplacez la méthode par FirstPackage le Initialize() code qui obtient le SVsUIShell service, obtient l’interface IVsUIShell et appelle sa ShowMessageBox méthode.

    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));
    }
    
  3. Générez le projet et commencez le débogage. L’instance expérimentale s’affiche.

  4. Ouvrez une solution dans l’instance expérimentale. Vous devez voir une boîte de message qui indique First Package Inside Initialize().