Erstellen einer Erweiterung mit einem VSPackage

Gilt für:yesVisual Studio noVisual Studio für MacnoVisual Studio Code

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie ein VSIX-Projekt erstellen und ein VSPackage-Projektelement hinzufügen. Wir verwenden das VSPackage, um den Benutzeroberflächenshell-Dienst abzurufen, um ein Meldungsfeld anzuzeigen.

Voraussetzungen

Ab Visual Studio 2015 installieren Sie das Visual Studio SDK nicht mehr über das Download Center. Es ist als optionales Feature im Visual Studio-Setup enthalten. Sie können das VS SDK auch später installieren. Weitere Informationen finden Sie unter Installieren des Visual Studio SDK.

Erstellen eines VSPackage

  1. Erstellen Sie ein VSIX-Projekt mit dem Namen FirstPackage. Sie finden die VSIX-Projektvorlage im Dialogfeld Neues Projekt , indem Sie nach "vsix" suchen.

  2. Wenn das Projekt geöffnet wird, fügen Sie eine Visual Studio-Paketelementvorlage mit dem Namen FirstPackage hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Hinzufügen>Neues Element aus. Wechseln Sie im Dialogfeld Neues Element hinzufügen zu Visual C#>Erweiterbarkeit , und wählen Sie Visual Studio-Paket aus. Ändern Sie im Feld Name unten im Fenster den Namen der Befehlsdatei in FirstPackage.cs.

  3. Erstellen Sie das Projekt, und starten Sie das Debugging.

    Die experimentelle instance von Visual Studio wird angezeigt. Weitere Informationen zum experimentellen instance finden Sie unter Die experimentelle instance.

  4. Öffnen Sie im experimentellen instance das Fenster Extras>Erweiterungen und Updates. Die FirstPackage-Erweiterung sollte hier angezeigt werden. (Wenn Sie Erweiterungen und Updates in Ihrem arbeitsfähigen instance von Visual Studio öffnen, wird FirstPackage nicht angezeigt.)

Laden des VSPackage

An diesem Punkt wird die Erweiterung nicht geladen, da nichts dazu führt, dass sie geladen wird. Sie können eine Erweiterung im Allgemeinen laden, wenn Sie mit der zugehörigen Benutzeroberfläche interagieren (indem Sie auf einen Menübefehl klicken, ein Toolfenster öffnen) oder indem Sie angeben, dass das VSPackage in einem bestimmten Benutzeroberflächenkontext geladen werden soll. Weitere Informationen zum Laden von VSPackages und UI-Kontexten finden Sie unter Laden von VSPackages. In diesem Verfahren wird gezeigt, wie Sie ein VSPackage laden, wenn eine Lösung geöffnet ist.

  1. Öffnen Sie die Datei FirstPackage.cs . Suchen Sie nach der Deklaration der FirstPackage -Klasse. Ersetzen Sie die vorhandenen Attribute durch die folgenden Attribute:

    [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. Fügen Sie eine Meldung hinzu, die uns darüber informiert, dass das VSPackage geladen wurde. Dazu verwenden wir die VSPackage-Methode Initialize() , da Sie Visual Studio-Dienste erst abrufen können, nachdem das VSPackage standortiert wurde. (Weitere Informationen zum Abrufen von Diensten finden Sie unter Vorgehensweise: Abrufen eines Diensts.) Ersetzen Sie die Initialize() -Methode von FirstPackage durch Code, der den SVsUIShell Dienst abruft, die -Schnittstelle abruft und deren IVsUIShell -Methode aufruft ShowMessageBox .

    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. Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz wird geöffnet.

  4. Öffnen Sie eine Projektmappe im experimentellen instance. Es sollte ein Meldungsfeld mit dem Hinweis First Package Inside Initialize() angezeigt werden.