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 :
Sotto di estensibilità di Visual Basic. La lingua predefinita del progetto di Visual Basic.
Sotto di estensibilità di c#. La lingua predefinita del progetto è c#.
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
Creare un package VS utilizzando il modello di progetto del pacchetto di Visual Studio.
Nella pagina di benvenuto, fare clic su dopo.
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.
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.
Scegliere Avanti.
Nella pagina di Opzioni selezionate di un VSPackage , comando di menuquindi fare clic su dopo.
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).
Scegliere Avanti.
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.
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.
Scegliere primo comando. Un messaggio simile a quella riportata di seguito verrà visualizzato.
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
in Esplora soluzioni, aprire FirstPackage.cs o FirstPackage.vb.
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.
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
in Esplora soluzioni, aprire First.vsct.
Il file viene aperto nell'editor XML di Visual Studio.
Trovare la fine dell'elemento dei comandi, che è indicato dal tag di </Commands> .
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.
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.
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.
Informazioni personalizzate di aggiunta relativa alla finestra di dialogo
È 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.
Per aggiungere informazioni personalizzate alla schermata iniziale e sulla finestra di dialogo
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)]
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
in modo implicito implementare l'interfaccia di IVsInstalledProduct. Questo passaggio è diverso per c# e Visual Basic.
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.
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(); }
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
Copiare Icon.ico da <percorso di installazione di Visual Studio SDK> \Common7\IDE\NewFileItems e incollarlo nella cartella delle risorse nella soluzione del pacchetto.
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.
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.
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.
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.
Per testare la schermata iniziale e sulla personalizzazione della finestra di dialogo
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.
Scegliere debug. Il riquadro di opzioni di Debug viene visualizzato.
Nella casella di Argomenti della riga di comando , aggiungere l'opzione di /splash .
Premere F5 per aprire Visual Studio nella compilazione sperimentale.
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.
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