Condividi tramite


procedura dettagliata: Chiamando in Visual Studio SDK utilizzando l'automazione

In questa procedura dettagliata viene illustrato come creare un componente aggiuntivo di Visual Studio che utilizza un servizio di Visual Studio. Il componente aggiuntivo creato si ottiene un provider di servizi e utilizzarla per ottenere un servizio. È possibile utilizzare questa stessa tecnica per ottenere qualsiasi servizio trattarsi di Visual Studio. per ulteriori informazioni sui servizi e sui provider di servizi, vedere servizi. Le procedure descritte di seguito viene illustrato come creare un componente aggiuntivo e ottenere un servizio dal componente aggiuntivo.

creare un componente aggiuntivo

In questa sezione, si crea un componente aggiuntivo di Visual Studio tramite il modello di progetto di componente aggiuntivo di Visual Studio.

Per creare un componente aggiuntivo

  1. Aprire Visual Studio. Nel menu File, puntare a nuovo quindi fare clic su nuovo progetto.

    Verrà visualizzata la finestra di dialogo Nuovo progetto.

  2. Nel riquadro sinistro della finestra di dialogo di nuovo progetto , espandere il nodo di altri tipi di progetto quindi fare clic sul nodo di Estensibilità .

  3. creare un nuovo progetto di componente aggiuntivo di Visual Studiodenominato componente aggiuntivo.

    L'esecuzione della creazione guidata componente aggiuntivo di Visual Studio.

  4. Nella pagina di selezionare un linguaggio di programmazione , selezionare Creare un componente aggiuntivo mediante Visual c# o Creare un componente aggiuntivo utilizzando Visual Basic.

  5. Nella pagina di selezionare un host di applicazione , in Microsoft Visual Studio 2010 quindi in deselezionare Macro di Microsoft Visual Studio 2010.

  6. Nella pagina di Immettere un nome e una descrizione , dal tipo MyAddin nella casella di Nome e su procedura dettagliata di MyAddin nella casella di descrizione .

  7. Nella pagina di Scegliere le opzioni del componente aggiuntivo , **Creare l'interfaccia utente della barra dei comandi del componente aggiuntivo?**selezionato. rimuovere le altre caselle di controllo.

  8. accettare tutte le altre impostazioni predefinite.

  9. Compilare la soluzione e verificare che venga compilato senza errori.

ottenere un servizio da un componente aggiuntivo

Mediante i passaggi riportati di seguito acquisendo un servizio dal componente aggiuntivo.

Per ottenere un servizio

  1. Aprire il file Connect.cs o Connect.vb e aggiungere le righe seguenti alle istruzioni di using (c#) o di 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. Fare clic con il pulsante destro del mouse sul nodo di progetto in Esplora soluzioni e aggiungere questi riferimenti.NET:

    Microsoft.VisualStudio.OLE.Interop
    Microsoft.VisualStudio.Shell.Interop
    
  3. Aggiungere le seguenti righe di codice alla clausola di If commandName = "Addin.Connect.Addin" Then o di if(commandName == "Addin.Connect.Addin") del metodo di 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;
    }
    

    Il codice esegue il cast dell'oggetto applicazione corrente (tipo DTE2) in IOleServiceProvider, quindi chiama QueryService per ottenere il servizio di SVsUIShell . Il servizio fornisce un'interfaccia di IVsUIShell . Il metodo di ShowMessageBox visualizzare una finestra di messaggio quando il componente aggiuntivo viene eseguito.

  4. Compilare e avviare il progetto di componente aggiuntivo in modalità di debug premendo F5.

    Verrà avviata un'altra istanza di Visual Studio.

  5. Nella nuova istanza di Visual Studio, scegliere dal menu di strumenti , fare clic su componente aggiuntivo. Nella finestra di messaggio verrà visualizzata la seguente:

    MyAddin
    Inside Addin.Connect
    

Vedere anche

Attività

Procedura: disattivare e rimuovere un componente aggiuntivo