Visual Studio erweitern: Elemente hinzufügen

Wer Visual Studio erweitern möchte, muss nicht nur die verschiedenen Wege kennen, wir man benutzerdefinierten Code in Visual Studio verfügbar machen kann. Wir müssen uns auch mit dem Objektmodell beschäftigen, dass es uns erlaubt, etwa Elemente zu einem Projekt hinzuzufügen oder bestehende Elemente um Code zu erweitern. Damit legen wir dann die Grundlage für viele Anwendungsfälle – etwa, um von Visual Studio aus ein Entity Data Model auf Basis des Datenmodells einer Access-Datenbank zu erstellen. Im vorliegenden Artikel zeigen wir jedoch erst einmal, wie Sie per DTE-Objektmodell neue Elemente zu einem Visual Basic-Projekt hinzufügen.

Ein Element hinzufügen

Ein Anwendungsfall könnte sein, dass Sie ein komplett neues Element zu einem Projekt hinzufügen wollen oder dass Sie bereits über eine entsprechende Datei verfügen und diese zum Projekt hinzufügen wollen. Wir erledigen das alles über die Kontextmenü-Einträge des Projektmappen-Explorers, wie wir sie im Artikel Visual Studio erweitern: Menübefehle angelegt haben.

In diesem Fall fügen wir den Befehl zum Kontextmenü des Projekt-Elements zu. Wir beschreiben das hier einmal, bei den folgenden Funktionen geben wir nur noch die wichtigsten Informationen zu den neuen Befehlen an. Wir fügen unserer VSIX-Lösung (wie Sie diese erstellen, erfahren Sie im oben genannten Artikel) ein neues Element des Typs Extensibility|Custom Command hinzu und nennen dieses NeueDateiHinzufuegen.vb. Wenn wir das tun, findet Visual Studio automatisch eine eventuell bereits vorhandene Package-Klasse und .vsct-Datei und fügt letzterer die Konfiguration des neuen Elements hinzu.

In der .vsct-Datei ändern wir das Element Commands|Groups|Group für das neue Element wie folgt, wir ändern also das Attribut id im Parent-Element in IDM_VS_CTXT_PROJNODE:

<Group guid="guidBeispielcommandPackageCmdSet1" id="MyMenuGroup" priority="0x0600">
   <Parent guid="guidSHLMainMenu"     id="IDM_VS_CTXT_PROJECTNODE" />
</Group>

So erscheint der neue Befehl als Kontextmenü-Eintrag des Projekt-Elements im Projektmappen-Explorer. Außerdem ändern wir die Beschriftung des Befehls in der gleichen Datei für das Unterelement ButtonText des Button-Elements wie folgt:

<ButtonText>Neue Datei hinzufügen</ButtonText>

Damit erhalten wir, wenn wir die Anwendung zum Debuggen starten, in der nun erscheinenden Visual Studio-Instanz mit dem Titel Experimentelle Instanz einen neuen Kontextmenü-Eintrag wie in Bild 1. Bevor wir mit der Programmierung der Methode Execute beginnen, fügen wir der Klasse NeueDateiEinfuegen.vb die beiden folgenden Namespaces hinzu:

Neuer Kontextmenü-Eintrag

Bild 1: Neuer Kontextmenü-Eintrag

Imports EnvDTE
Imports EnvDTE80

Neues Element zum Projekt hinzufügen

Der Befehl, um ein komplett neues Element zu einem Projekt hinzuzufügen, lautet AddNewItem und gehört zur Auflistung ItemOperations, die wiederum direkt dem DTE-Objekt untergeordnet ist. Um das DTE-Objekt zu referenzieren, fügen wir dem Kopf der Methode Execute, die beim Betätigen des Menübefehls ausgelöst wird, das Schlüsselwort Async hinzu:

Private Async Sub Execute(sender As Object, e As EventArgs)
     ThreadHelper.ThrowIfNotOnUIThread()

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar