Erstellen einer Erweiterung mit einem Menübefehl

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie eine Erweiterung mit einem Menübefehl erstellen, der Editor startet.

Erstellen eines Menübefehls

  1. Erstellen Sie ein VSIX-Projekt mit dem Namen "FirstMenuCommand". 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 benutzerdefinierte Befehlselementvorlage mit dem Namen "FirstCommand" 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" zur Erweiterbarkeit von C#-Elementen>, und wählen Sie "Befehl" aus. Ändern Sie im Feld "Name " unten im Fenster den Befehlsdateinamen in "FirstCommand.cs".

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

    Die experimentelle Instanz von Visual Studio wird angezeigt. Weitere Informationen zur experimentellen Instanz finden Sie in der experimentellen Instanz.

  4. Öffnen Sie in der experimentellen Instanz das Fenster "Erweiterungen> verwalten". Hier sollte die FirstMenuCommand-Erweiterung angezeigt werden. (Wenn Sie öffnen Verwalten von Erweiterungen in Ihrer Arbeitsinstanz von Visual Studio wird "FirstMenuCommand" nicht angezeigt.

Wechseln Sie nun in der experimentellen Instanz zum Menü "Extras ". Der Befehl "Invoke FirstCommand" sollte angezeigt werden. An diesem Punkt öffnet der Befehl ein Meldungsfeld mit dem Hinweis "FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback()". Im nächsten Abschnitt erfahren Sie, wie Sie Editor mit diesem Befehl starten.

Ändern des Menübefehlshandlers

Jetzt aktualisieren wir den Befehlshandler, um Editor zu starten.

  1. Beenden Sie das Debuggen, und kehren Sie zu Ihrer Arbeitsinstanz von Visual Studio zurück. Öffnen Sie die Datei "FirstCommand.cs ", und fügen Sie die folgende using-Anweisung hinzu:

    using System.Diagnostics;
    
  2. Suchen Sie den privaten FirstCommand-Konstruktor. Hier wird der Befehl mit dem Befehlsdienst eingebunden, und der Befehlshandler wird angegeben. Ändern Sie den Namen des Befehlshandlers wie folgt in Start Editor:

    private FirstCommand(AsyncPackage package, OleMenuCommandService commandService)
    {
        this.package = package ?? throw new ArgumentNullException(nameof(package));
        commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));
    
        CommandID menuCommandID = new CommandID(CommandSet, CommandId);
        // Change to StartNotepad handler.
        MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID);
        commandService.AddCommand(menuItem);
    }
    
  3. Entfernen Sie die Execute Methode, und fügen Sie eine StartNotepad Methode hinzu, die nur Editor startet:

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. Probieren Sie es jetzt aus. Wenn Sie mit dem Debuggen des Projekts beginnen und auf "Extras>Aufrufen von FirstCommand" klicken, sollte eine Instanz von Editor angezeigt werden.

    Sie können eine Instanz der Process Klasse verwenden, um eine beliebige ausführbare Datei auszuführen, nicht nur Editor. Probieren Sie es beispielsweise aus calc.exe.

Bereinigen der experimentellen Umgebung

Wenn Sie mehrere Erweiterungen entwickeln oder einfach nur Ergebnisse mit unterschiedlichen Versionen Ihres Erweiterungscodes untersuchen, funktioniert Ihre experimentelle Umgebung möglicherweise nicht mehr wie erwartet. In diesem Fall sollten Sie das Reset-Skript ausführen. Sie wird als "Visual Studio Experimental Instance" bezeichnet und wird als Teil des Visual Studio SDK ausgeliefert. Dieses Skript entfernt alle Verweise auf Ihre Erweiterungen aus der experimentellen Umgebung, sodass Sie von Grund auf neu beginnen können.

Sie können auf eine von zwei Arten zu diesem Skript gelangen:

  1. Suchen Sie auf dem Desktop die Visual Studio Experimental-Instanz zurücksetzen.

  2. Führen Sie die folgenden Befehle über die Befehlszeile aus:

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
    
    

Bereitstellen der Erweiterung

Da Ihre Toolerweiterung nun wie gewünscht ausgeführt wird, ist es an der Zeit, sie mit Ihren Freunden und Kollegen zu teilen. Das ist einfach, solange Visual Studio 2015 installiert ist. Alles, was Sie tun müssen, ist das Senden der .vsix-Datei, die Sie erstellt haben. (Achten Sie darauf, sie im Releasemodus zu erstellen.)

Sie finden die VSIX-Datei für diese Erweiterung im Verzeichnis "FirstMenuCommand bin". Unter der Voraussetzung, dass Sie die Release-Konfiguration erstellt haben, lautet dies in:

<Codeverzeichnis>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

Um die Erweiterung zu installieren, muss Ihr Freund alle geöffneten Instanzen von Visual Studio schließen und dann auf die VSIX-Datei doppelklicken, wodurch das VSIX-Installationsprogramm angezeigt wird. Die Dateien werden in das Verzeichnis %LocalAppData%\Microsoft\VisualStudio<version>\Extensions kopiert.

Wenn Ihr Freund Visual Studio erneut öffnet, findet er die FirstMenuCommand-Erweiterung in Den Tools-Erweiterungen>und -Updates. Sie können auch zu Erweiterungen und Updates wechseln, um die Erweiterung zu deinstallieren oder zu deaktivieren.

Nächste Schritte

Diese exemplarische Vorgehensweise hat Ihnen nur einen kleinen Teil davon gezeigt, was Sie mit einer Visual Studio-Erweiterung tun können. Im Folgenden finden Sie eine kurze Liste mit anderen (relativ einfachen) Aktionen, die Sie mit Visual Studio-Erweiterungen ausführen können:

  1. Mit einem einfachen Menübefehl können Sie viele weitere Aktionen ausführen:

    1. Hinzufügen eines eigenen Symbols: Hinzufügen von Symbolen zu Menübefehlen

    2. Ändern des Texts des Menübefehls: Ändern des Texts eines Menübefehls

    3. Hinzufügen einer Menüverknüpfung zu einem Befehl: Binden von Tastenkombinationen an Menüelemente

  2. Hinzufügen verschiedener Arten von Befehlen, Menüs und Symbolleisten: Erweitern von Menüs und Befehlen

  3. Hinzufügen von Toolfenstern und Erweitern der integrierten Visual Studio-Toolfenster: Erweitern und Anpassen von Toolfenstern

  4. Hinzufügen von IntelliSense, Codevorschlägen und anderen Features zu vorhandenen Code-Editoren: Erweitern der Editor- und Sprachdienste

  5. Hinzufügen von Optionen und Eigenschaftenseiten und Benutzereinstellungen zu Ihrer Erweiterung: Erweitern von Eigenschaften und Eigenschaftenfenster sowie Erweitern von Benutzereinstellungen und -optionen

    Andere Arten von Erweiterungen erfordern etwas mehr Arbeit, z. B. das Erstellen eines neuen Projekttyps (Erweitern von Projekten), das Erstellen eines neuen Editortyps (Erstellen von benutzerdefinierten Editoren und Designern) oder das Implementieren der Erweiterung in einer isolierten Shell: Visual Studio isolierte Shell