Partager via


Procédure pas - à - pas : Appeler le kit de développement Visual Studio à l'aide de l'automation

Cette procédure pas - à - pas illustre comment créer un complément Visual Studio qui consomme un service de Visual Studio. Le complément que vous créez obtient un fournisseur de services et l'utilise pour obtenir un service. Vous pouvez utiliser cette même technique pour obtenir un service offert de Visual Studio. Pour plus d'informations sur les services et les fournisseurs de services, consultez services. Les procédures suivantes montrent comment créer un complément puis obtenir un service du complément.

Créer un complément

Dans cette section, vous créez un complément Visual Studio à l'aide de le modèle de projet de Complément Visual Studio.

Pour créer un complément

  1. Ouvrez Visual Studio. Dans le menu de Fichier , pointez sur Nouveau puis cliquez sur Nouveau projet.

    La boîte de dialogue Nouveau projet s'affiche.

  2. Dans le volet gauche de la boîte de dialogue de Nouveau projet , développez le nœud d' Autres types de projets puis cliquez sur le nœud d' Extensibilité .

  3. Créez un projet Complément de Visual Studionommé complément.

    Les passes de complément d'Assistant de Visual Studio.

  4. Dans la page de Sélectionner un langage de programmation , sélectionnez Créez un complément à l'aide de Visual c# ou Créez un complément à l'aide de Visual Basic.

  5. Dans la page de Sélectionner une application hôte , sélectionnez Microsoft Visual Studio 2010 et Microsoft Visual Studio 2010 macrosclair.

  6. sur la page d' Entrer un nom et une description , le type MyAddin dans la zone de Nom et le Procédure pas - à - pas de MyAddin dans la zone de Description .

  7. Dans la page de Choisir les options du complément , sélectionnez Souhaitez -vous créer l'interface utilisateur de barre de commandes pour votre complément ?. désactivez les autres cases à cocher.

  8. Acceptez toutes les autres valeurs par défaut.

  9. Générez la solution et vérifiez qu'elle compile sans erreurs.

Obtention d'un service d'un complément

Les étapes suivantes vous guident en acquérant un service de votre complément.

pour obtenir un service

  1. Ouvrez le fichier Connect.cs ou Connect.vb et ajoutez ces lignes aux instructions d' using (c#) ou d' Imports (Visual Basic) :

    Imports System.Runtime.InteropServices
    Imports Microsoft.VisualStudio.OLE.Interop
    Imports Microsoft.VisualStudio.Shell.Interop
    Imports IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider
    
    using System.Runtime.InteropServices;
    using Microsoft.VisualStudio.OLE.Interop;
    using Microsoft.VisualStudio.Shell.Interop;
    using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
    
  2. Cliquez avec le bouton droit sur le nœud de projet dans Explorateur de solutions et ajoutez ces références du .NET :

    Microsoft.VisualStudio.OLE.Interop
    Microsoft.VisualStudio.Shell.Interop
    
  3. Ajoutez ces lignes de code dans la clause d' if(commandName == "Addin.Connect.Addin") ou d' If commandName = "Addin.Connect.Addin" Then de la méthode d' Exec :

    If commandName = "Addin.Connect.Addin" Then 
        Dim sp As IOleServiceProvider = DirectCast(_applicationObject, IOleServiceProvider)
        Dim SID As Guid = GetType(SVsUIShell).GUID
        Dim IID As Guid = GetType(IVsUIShell).GUID
        Dim output As IntPtr
        sp.QueryService(SID, IID, output)
        Dim uiShell As IVsUIShell = DirectCast(Marshal.GetObjectForIUnknown(output), IVsUIShell)
    
        Dim clsid As Guid = Guid.Empty
        Dim result As Integer
        uiShell.ShowMessageBox(0, clsid, "MyAddin", String.Format(System.Globalization.CultureInfo.CurrentCulture, "Inside " & Me.ToString()), String.Empty, 0, _
        OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result)
    
        handled = True 
        Return 
    End If
    
    if (commandName == "Addin.Connect.Addin")
    {
        IOleServiceProvider sp = (IOleServiceProvider)
          _applicationObject;
        Guid SID = typeof(SVsUIShell).GUID;
        Guid IID = typeof(IVsUIShell).GUID;
        IntPtr output;
        sp.QueryService(ref SID, ref IID, out output);
        IVsUIShell uiShell = (IVsUIShell)Marshal.GetObjectForIUnknown(output);
    
        Guid clsid = Guid.Empty;
        int result;
        uiShell.ShowMessageBox(
           0,
           ref clsid,
           "MyAddin",
           string.Format(
              CultureInfo.CurrentCulture, "Inside " + this.ToString()),
           string.Empty,
           0,
           OLEMSGBUTTON.OLEMSGBUTTON_OK,
           OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
           OLEMSGICON.OLEMSGICON_INFO,
           0,
           out result);
    
        handled = true;
        return;
    }
    

    Ce code effectue un cast de l'objet actuel d'application (type DTE2) dans IOleServiceProvider, puis appelle QueryService pour obtenir le service d' SVsUIShell . ce service fournit une interface d' IVsUIShell . La méthode d' ShowMessageBox affiche un message lorsque le complément est exécuté.

  4. Générez et exécutez le projet de complément en mode débogage en appuyant sur F5.

    Cette opération lance une autre instance de Visual Studio.

  5. Dans la nouvelle instance de Visual Studio, dans le menu d' Outils , cliquez sur complément. Le message affiche ce qui suit :

    MyAddin
    Inside Addin.Connect
    

Voir aussi

Tâches

Comment : désactiver et supprimer un complément