Condividi tramite


procedura dettagliata: Creare un package VS (una Parte 1 a 4)

È possibile aggiungere funzionalità a Visual Studio creando un VSPackage. Poiché un VSPackage è un modulo di software, può essere distribuito ad altre persone in modo che possano estendere di Visual Studio nei propri computer.

Utilizzando il modello importa pacchetto di Visual Studio, è possibile creare un progetto che dispone già dei file di origine e i file di configurazione che sono obbligatori per creare un VSPackage. Il progetto è incluso un file che definisce la classe che denominate quando si crea il progetto. Questa classe, derivata da una classe gestita del Framework (MPF) del pacchetto denominato Package, include attributi che determinano la modalità di package VS dovrebbe funzionare in Visual Studio. La classe del pacchetto contiene anche il codice di inizializzazione e altro codice come gestori del comando di menu. Questa classe è la base del package VS.

In questa procedura dettagliata viene illustrato come creare un package VS e personalizzarlo, come segue:

  • Creare un package VS utilizzando il modello importa pacchetto.

  • Implementare un gestore di comandi di menu.

  • Aggiungere una scelta rapida.

  • Aggiungere informazioni personalizzate alla schermata iniziale di Visual Studio e nella finestra di dialogo di Su .

In questa procedura dettagliata fa parte di una serie in cui viene illustrato come estendere l'ambiente di sviluppo integrato di Visual (IDE) Studio. Per ulteriori informazioni, vedere Procedure dettagliate per personalizzare Visual Studio tramite package VS..

Prerequisiti

Per completare questa procedura dettagliata, è necessario installare Visual Studio 2010 SDK.

Nota

per ulteriori informazioni su Visual Studio SDK, vedere Cenni preliminari sull'estensione di Visual Studio.Per ulteriori informazioni su come scaricare Visual Studio SDK, vedere Centro per sviluppatori di estensibilità di Visual Studio il sito Web di MSDN.

Percorsi del modello per il modello del pacchetto Visual Studio

Il modello del pacchetto Visual Studio è disponibile in queste posizioni nella finestra di dialogo di nuovo progetto :

  1. Sotto di estensibilità di Visual Basic. La lingua predefinita del progetto di Visual Basic.

  2. Sotto di estensibilità di c#. La lingua predefinita del progetto è c#.

  3. Nell'ambito dell'altra estensibilità dei tipi di progetto. La lingua predefinita del progetto è C++.

Creazione di un package VS utilizzando il modello importa pacchetto

In questa sezione viene illustrato come creare una soluzione di un VSPackage in Visual Studio.

Per creare una soluzione di base di un VSPackage

  1. Creare un package VS utilizzando il modello di progetto del pacchetto di Visual Studio.

  2. Nella pagina di benvenuto, fare clic su dopo.

  3. Nella pagina di selezionare un linguaggio di programmazione , Visual C# selezionato o Visual Basic, generare un nuovo file di chiave per firmare l'assemblyquindi fare clic su dopo.

  4. Nella pagina di Informazioni di base di un VSPackage , nella casella nome di un VSPackage, il tipo FirstPackagee accettare le impostazioni predefinite rimanenti. Il nome dell'azienda e il nome del progetto saranno combinate per creare lo spazio dei nomi per il pacchetto.

    Informazioni di base su VSPackage

    Scegliere Avanti.

  5. Nella pagina di Opzioni selezionate di un VSPackage , comando di menuquindi fare clic su dopo.

  6. Nella pagina di Opzioni del comando , nella casella di Nome del comando , tipo primo comando. (Questo testo verrà visualizzato nel menu di Visual Studio.) Nella casella di ID di comando , tipo cmdidFirstCommand. (Questo identificatore verrà utilizzato nel codice per identificare il comando).

    Finestra di dialogo Opzioni di comando

    Scegliere Avanti.

  7. Nella pagina di Selezionare le opzioni di test , fare clic su - Fine.

    Il modello viene creato un progetto di Visual Studio con funzionalità di base. È possibile eseguire la verifica premendo F5, che compila il progetto e quindi viene aperto in un'altra istanza di Visual Studio in modalità di debug (anche noto come compilazione sperimentale di Visual Studio).

    Nota

    Quando si compila la prima volta il progetto, in Visual Studio può sembrare non rispondere ed è possibile ottenere un messaggio che Visual Studio è occupato.Ignorare il messaggio e l'attesa fino a quando Visual Studio non si apra e il pacchetto venga caricato.

  8. In the experimental build, on the Tools menu, a command named First Command should be displayed. Si noti che il primo comando è il nome immesso nella pagina di Opzioni del comando del modello.

  9. Scegliere primo comando. Un messaggio simile a quella riportata di seguito verrà visualizzato.

    Finestra di messaggio del primo comando

Esame del gestore comando di menu

Il messaggio visualizzato quando si fa clic su primo comando scegliere dal menu di strumenti proviene dal codice nel gestore per il comando di menu. Questo gestore è nel file di FirstPackage.vb o di FirstPackage.cs.

Per testare il gestore della voce di menu

  1. in Esplora soluzioni, aprire FirstPackage.cs o FirstPackage.vb.

  2. Individuare la classe di FirstPackage. La classe di FirstPackage viene definita come segue.

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

    Si noti che la classe è derivata dalla classe pacchetto di MPF.

  3. Trovare codice per il gestore del pulsante, che viene distribuito con il metodo MenuItemCallback. La funzione di gestione di menu è un metodo del gestore eventi tipico di Windows Form.

    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));
    }
    

Aggiunta di scelta rapida

Per impostazione predefinita, i comandi di menu che vengono creati dal modello del pacchetto non dispongono di un tasto di scelta rapida. È possibile aggiungerne una a primo comando.

Per aggiungere una scelta rapida predefiniti

  1. in Esplora soluzioni, aprire First.vsct.

    Il file viene aperto nell'editor XML di Visual Studio.

  2. Trovare la fine dell'elemento dei comandi, che è indicato dal tag di </Commands> .

  3. Aggiungere le seguenti righe tra il tag di </Commands> e il tag di <Symbols> .

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

    Questo elemento di KeyBinding dispone di diversi attributi. Gli attributi di id e di guid determinano quale comando riceverà un tasto di scelta rapida. Il GUID è il GUID del pacchetto VS e l'id è l'identificatore di comando digitato in quando viene eseguito il modello. Entrambi i simboli sono definiti nella sezione dei simboli, come illustrato di seguito.

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

    Il valore dell'attributo di editor è un GUID che rappresenta il contesto in cui il tasto di scelta rapida sarà disponibile. In Visual Studio, l'associazione di un tasto di scelta rapida a un comando può essere limitate alle finestre specifiche o essere resa globale (ovvero disponibili ovunque in Visual Studio). Ad esempio, in un editor di testo, CTRL+I possibile eseguire il comando di ricerca incrementale, ma in Esplora soluzioni, CTRL+I non dispone di associazione di chiavi; pertanto, CTRL+I è disponibile solo nell'editor di testo. In questa procedura dettagliata, il tasto di scelta rapida è progettata per essere globale. Di conseguenza, il valore dell'attributo dell'editor viene guidVSStd97, che è il valore che produce una scelta rapida globale.

    key1 e mod1 del set la chiave e il modificatore che devono essere raggiunti per attivare il tasto di scelta rapida. Per il valore di key1, tutte le chiavi della tastiera sono disponibili in formato token, ad esempio, nella “m„. per la lettera m. e “VK_F5„ per il tasto funzione F5. Il valore di mod1 può essere “ALT„, “controllo„, o “scorrimento„, separati da spazi, in qualsiasi combinazione.

    In questa procedura dettagliata, il valore di key1 è M e il valore di mod1 è (Control Shift). Di conseguenza, la scelta rapida stati CTRL+MAIUSC+M.

  4. Scegliere Avvia senza eseguire debug dal menu Debug.

    Nella compilazione sperimentale di Visual Studio, scegliere dal menu di strumenti , CTRL+MAIUSC+M deve essere visualizzato accanto a primo comando.

    Primo comando con tasti di scelta rapida

  5. Premere CTRL+MAIUSC+M. Verrà visualizzato lo stesso messaggio visualizzata quando si fa clic primo comando scegliere dal menu di strumenti .

    per ulteriori informazioni sui file di .vsct, vedere Riferimento XML Schema VSCT.

È possibile includere un'icona e le informazioni sul pacchetto nella finestra di dialogo di Su . Per eseguire questa operazione, è necessario apportare le seguenti modifiche alla soluzione:

  • Modificare gli argomenti di InstalledProductRegistrationAttribute per la classe principale di un VSPackage.

  • Implementare l'interfaccia di IVsInstalledProduct per la classe principale di un VSPackage.

  • Aggiungere un'icona alla cartella delle risorse.

  • Fare riferimento all'icona nel file di VSPackage.resx.

La classe principale di un VSPackage utilizza l'attributo di InstalledProductRegistration per specificare dove reperire le informazioni per la finestra di dialogo di Su . in questa procedura dettagliata, la classe principale è denominata FirstPackage e può essere modificata aprendo FirstPackage.cs o FirstPackage.vb.

Il nuovo modello di progetto generato nell'attributo di InstalledProductRegistration.

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

La risorsa gli ID “#110„ e “#112„ si riferisce alle risorse di tipo stringa definite nel file di VSPackage.resx, come segue:

  • 110 fanno riferimento a FirstPackage

  • 112 si riferiscono alle informazioni su un VSPackage

IconResourceID 400 fa riferimento al file di Package.ico nella cartella delle risorse, definita nel file di VSPackage.resx come segue.

<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>

Per personalizzare la finestra di dialogo di Su , modificare il primo argomento dell'attributo di InstalledProductRegistration a true, in modo che il package VS possibile fornire informazioni appropriate mediante l'interfaccia di IVsInstalledProduct.

  1. FirstPackage.cs aperti o FirstPackage.vb, cerca l'attributo di InstalledProductRegistration e modificare i relativi argomenti come segue.

    InstalledProductRegistration(True, Nothing, Nothing, Nothing)
    
    [InstalledProductRegistration(true, null, null, null)]
    
  2. Derivare la classe di FirstPackage sia dal pacchetto che da IVsInstalledProduct.

    Public NotInheritable Class FirstPackage
        Inherits Package
        Implements IVsInstalledProduct
    
    public sealed class FirstPackage : Package, IVsInstalledProduct
    
  3. in modo implicito implementare l'interfaccia di IVsInstalledProduct. Questo passaggio è diverso per c# e Visual Basic.

    1. In c#, in modo implicito implementare l'interfaccia di IVsInstalledProduct inserendo il mouse su IVsInstalledProduct. Quando il menu IntelliSense viene visualizzato, fare clic sul primo elemento.

      Implementa interfaccia

      Questo scopo aggiungere i seguenti metodi stub alla classe di FirstPackage. In un passaggio successivo, inserire i metodi.

      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. In Visual Basic, aggiungere il seguente codice alla fine della classe di FirstPackage. In un passaggio successivo, inserire i metodi.

      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. Copiare Icon.ico da <percorso di installazione di Visual Studio SDK> \Common7\IDE\NewFileItems e incollarlo nella cartella delle risorse nella soluzione del pacchetto.

  5. In Solution Explorer, right-click the Resources folder, point to Add, and then click Existing Item. Impostare il filtro per il tipo di file a Tutti i file (*.*) quindi aggiungere Icon.ico.

  6. In Esplora soluzioni, fare clic con il pulsante destro del mouse su VSPackage.resx quindi fare clic su Apri con. L'editor XML selezionare e fare clic su OK per aprire il file nell'editor XML.

  7. Aggiungere le seguenti righe immediatamente prima del tag finale di </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>
    

    Questo markup dichiara Icon.ico come ID di risorsa 500.

  8. In FirstPackage.cs o in FirstPackage.vb, sostituire l'implementazione dell'interfaccia di IVsInstalledProduct tramite il codice seguente.

    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; 
    } 
    

    Il secondo metodo restituisce l'ID della risorsa per l'icona. Le tre funzioni rimanenti restituisce il nome, i dettagli del prodotto e il controllo ID, in modo che verranno visualizzate nella finestra di dialogo di Su .

È possibile verificare le modifiche eseguendo la procedura riportata di seguito.

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul primo nodo del progetto e scegliere Proprietà. Il ognuna delle applicazioni viene visualizzato.

  2. Scegliere debug. Il riquadro di opzioni di Debug viene visualizzato.

  3. Nella casella di Argomenti della riga di comando , aggiungere l'opzione di /splash .

    Switch di apertura della riga di comando

  4. Premere F5 per aprire Visual Studio nella compilazione sperimentale.

  5. Scegliere dal menu di Guida , fare clic su Informazioni su Microsoft Visual Studio.

    La finestra di dialogo di Su viene visualizzata l'icona e il testo del package VS.

    Finestra di dialogo Informazioni su

Argomenti successivi

Esplora soluzioni e Elenco attività sono esempi delle finestre degli strumenti. In procedura dettagliata: Per creare una finestra degli strumenti (parte 2 a 4), è possibile creare una finestra degli strumenti che gli ancoraggi in Visual Studio e consente di riprodurre i file audio.

Vedere anche

Concetti

Esempi di estensibilità di Visual Studio

Altre risorse

Vspackage

Cliente di personalizzazione di un VSPackage

VSPackage Load Keys

esempio di Reference.Package

esempio di Reference.Package