Freigeben über


Erstellen einer Erweiterung mit einem Menübefehl

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

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 Elementvorlage für benutzerdefinierte Befehle 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. Wählen Sie im Dialogfeld Neues Element hinzufügen unter C#-Elemente>Erweiterbarkeit die Option 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 unter Die experimentelle Instanz.

  4. Öffnen Sie in der experimentellen Instanz das Fenster Erweiterungen>Erweiterungen verwalten. Hier wird die Erweiterung FirstMenuCommand angezeigt. (Wenn Sie Erweiterungen verwalten in Ihrer funktionierenden Instanz von Visual Studio öffnen, wird FirstMenuCommand nicht angezeigt.)

Wechseln Sie nun in der experimentellen Instanz zum Menü Extras. Der Befehl Invoke FirstCommand wird angezeigt. An diesem Punkt wird durch den Befehl ein Nachrichtenfeld mit folgendem Inhalt geöffnet: FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Im nächsten Abschnitt wird gezeigt, wie Sie den Editor über diesen Befehl öffnen.

Ändern des Menübefehlshandlers

Aktualisieren Sie nun den Befehlshandler, um den Editor zu starten.

  1. Beenden Sie den Debugvorgang, und kehren Sie zu Ihrer funktionierenden Instanz 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 verknüpft und der Befehlshandler angegeben. Ändern Sie den Namen des Befehlshandlers in „StartNotepad“ wie folgt:

    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 Methode Execute, und fügen Sie die Methode StartNotepad hinzu, wodurch nur der Editor geöffnet wird:

    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 Debugvorgang des Projekts beginnen und auf Extras>Invoke FirstCommand klicken, wird eine Instanz des Editors angezeigt.

    Verwenden Sie eine Instanz der Klasse Process, um eine beliebige ausführbare Datei (nicht nur den Editor) auszuführen. Versuchen Sie es beispielsweise mit calc.exe.

Bereinigen der experimentellen Umgebung

Wenn Sie mehrere Erweiterungen entwickeln oder einfach nur Ergebnisse mit unterschiedlichen Versionen Ihres Erweiterungscodes überprüfen, funktioniert Ihre experimentelle Umgebung möglicherweise nicht mehr ordnungsgemäß. Führen Sie in diesem Fall das Reset-Skript aus. Dieses Skript heißt Reset the Visual Studio Experimental Instance (Zurücksetzen der experimentellen Instanz von Visual Studio) und wird als Teil des Visual Studio SDK bereitgestellt. Durch dieses Skript werden alle Verweise auf Ihre Erweiterungen aus der experimentellen Umgebung entfernt, sodass Sie neu beginnen können.

Sie können auf dieses Skript auf zwei Arten zugreifen:

  1. Suchen Sie auf dem Desktop nach Reset the Visual Studio Experimental Instance.

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

Da Ihre Toolerweiterung nun wie gewünscht ausgeführt wird, können Sie sie mit Freunden und Kollegen teilen. Das klappt problemlos, wenn Visual Studio 2015 installiert ist. Sie müssen nur die von Ihnen erstellte VSIX-Datei senden. (Achten Sie darauf, sie im Releasemodus zu erstellen.)

Sie finden die VSIX-Datei für diese Erweiterung im BIN-Verzeichnis von FirstMenuCommand. Vorausgesetzt, Sie haben die Releasekonfiguration erstellt, finden Sie sie unter:

<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, um das VSIX-Installationsprogramm zu öffnen. Die Dateien werden in das Verzeichnis %LocalAppData%\Microsoft\VisualStudio<Version>\Extensions kopiert.

Beim erneuten Öffnen von Visual Studio findet Ihr Freund die Erweiterung „FirstMenuCommand“ unter Extras>Erweiterungen und Updates. Sie können die Erweiterung unter Erweiterungen und Updates auch deinstallieren oder deaktivieren.

Nächste Schritte

Diese exemplarische Vorgehensweise zeigt Ihnen nur einen kleinen Teil der Anwendungsmöglichkeiten der Visual Studio-Erweiterung. Im Folgenden finden Sie eine kurze Liste mit anderen (relativ einfachen) Vorgängen, die Sie mit Visual Studio-Erweiterungen ausführen können:

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

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

    2. Ändern des Menübefehlstexts: Ä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: Menüs und Befehle erweitern

  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 Options- und Eigenschaftenseiten sowie Benutzereinstellungen zu Ihrer Erweiterung: Erweitern von Eigenschaften und des Eigenschaftenfensters und Benutzereinstellungen und Optionen erweitern

    Andere Arten von Erweiterungen erfordern etwas mehr Arbeit, z. B. das Erstellen eines neuen Projekttyps (Projekte erweitern) oder das Erstellen eines neuen Editortyps (Erstellen von benutzerdefinierten Editoren und Designern).