Creare un'estensione con un pacchetto VSPackage

Questa procedura dettagliata illustra come creare un progetto VSIX e aggiungere un elemento di progetto VSPackage. Useremo il VSPackage per ottenere il servizio Shell dell'interfaccia utente per visualizzare una finestra di messaggio.

Creare un pacchetto VSPackage

  1. Creare un progetto VSIX denominato FirstPackage. È possibile trovare il modello di progetto VSIX nella finestra di dialogo Nuovo progetto cercando "vsix".

  2. Quando si apre il progetto, aggiungere un modello di elemento del pacchetto di Visual Studio denominato FirstPackage. Nella Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Aggiungi>nuovo elemento. Nella finestra di dialogo Aggiungi nuovo elemento passare a Visual C#>Estendibilità e selezionare Pacchetto di Visual Studio. Nel campo Nome nella parte inferiore della finestra modificare il nome del file di comando in FirstPackage.cs.

  3. Compilare il progetto e avviare il debug.

    Viene visualizzata l'istanza sperimentale di Visual Studio. Per altre informazioni sull'istanza sperimentale, vedere Istanza sperimentale.

  4. Nell'istanza sperimentale aprire la finestra Strumenti>Estensioni e Aggiornamenti. L'estensione FirstPackage dovrebbe essere visualizzata qui. (Se si apre Estensioni e Aggiornamenti nell'istanza di lavoro di Visual Studio, non verrà visualizzato FirstPackage.

Caricare il pacchetto VSPackage

A questo punto, l'estensione non viene caricata perché non c'è nulla che ne causa il caricamento. In genere è possibile caricare un'estensione quando si interagisce con l'interfaccia utente (facendo clic su un comando di menu, aprendo una finestra degli strumenti) o specificando che il pacchetto VSPackage deve essere caricato in un contesto dell'interfaccia utente specifico. Per altre informazioni sul caricamento di pacchetti VSPackage e contesti dell'interfaccia utente, vedere Caricamento di pacchetti VSPackage. Per questa procedura verrà illustrato come caricare un VSPackage quando una soluzione è aperta.

  1. Aprire il file FirstPackage.cs . Cercare la dichiarazione della FirstPackage classe . Sostituire gli attributi esistenti con gli attributi seguenti:

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
    [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
    [Guid(FirstPackage.PackageGuidString)]
    public sealed class FirstPackage : Package
    
  2. Aggiungere un messaggio che consenta di sapere che il pacchetto VSPackage è stato caricato. A tale scopo viene usato il metodo vspackage Initialize() , perché è possibile ottenere i servizi di Visual Studio solo dopo che il pacchetto VSPackage è stato sito. Per altre informazioni sul recupero dei servizi, vedere Procedura: Ottenere un servizio. Sostituire il Initialize() metodo di FirstPackage con il codice che ottiene il SVsUIShell servizio, ottiene l'interfaccia IVsUIShell e chiama il relativo ShowMessageBox metodo.

    protected override void Initialize()
    {
        base.Initialize();
    
        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}.Initialize()", this.GetType().FullName),
            string.Empty,
            0,
            OLEMSGBUTTON.OLEMSGBUTTON_OK,
            OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
            OLEMSGICON.OLEMSGICON_INFO,
            0,
            out result));
    }
    
  3. Compilare il progetto e avviare il debug. Viene visualizzata l'istanza sperimentale.

  4. Aprire una soluzione nell'istanza sperimentale. Verrà visualizzata una finestra di messaggio che indica First Package Inside Initialize().