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
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.
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é .
Créez un projet Complément de Visual Studionommé complément.
Les passes de complément d'Assistant de Visual Studio.
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.
Dans la page de Sélectionner une application hôte , sélectionnez Microsoft Visual Studio 2010 et Microsoft Visual Studio 2010 macrosclair.
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 .
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.
Acceptez toutes les autres valeurs par défaut.
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
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;
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
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é.
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.
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