{"id":55000185,"date":"2019-08-01T00:00:00","date_gmt":"2020-05-31T18:10:40","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=185"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Visual_Studio_erweitern_Menuebefehle","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Visual_Studio_erweitern_Menuebefehle\/","title":{"rendered":"Visual Studio erweitern: Men&uuml;befehle"},"content":{"rendered":"<p><b>Visual Studio bietet die M&ouml;glichkeit der Erweiterung durch verschiedene Elemente wie etwa Add-Ins, Templates oder Packages. Damit k&ouml;nnen Sie den Funktionsumfang von Visual Studio nach Ihren eigenen W&uuml;nschen erweitern. Ein sehr oft genutztes Beispiel ist etwa das Hinzuf&uuml;gen von Men&uuml;befehlen. Sie k&ouml;nnen neue Befehle zu den bestehenden Men&uuml;s des Hauptmen&uuml;s von Visual Studio hinzuf&uuml;gen oder auch Kontextmen&uuml;s erweitern. Sogar neue Men&uuml;s lassen sich zum Hauptmen&uuml; hinzuf&uuml;gen. Wie das geht und wie Sie dann auf Visual Studio zugreifen, zeigen wir Ihnen in diesem Artikel.<\/b><\/p>\n<h2>Extensionsentwicklung hinzuf&uuml;gen<\/h2>\n<p>Der erste Schritt hin zum ersten eigenen Add-In ist, sofern noch nicht vorhanden, das Hinzuf&uuml;gen des Toolsets <b>Visual Studio Extensionentwicklung <\/b>(siehe Bild 1). Zu diesem Fenster gelangen Sie, wenn Sie im Dialog <b>Neues Projekt <\/b>links auf den Link <b>Visual Studio Installer &ouml;ffnen <\/b>klicken. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_04\/pic_185_001.png\" alt=\"Erweitern von Visual Studio um die Extensionsentwicklung\" width=\"700\" height=\"319,4872\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Erweitern von Visual Studio um die Extensionsentwicklung<\/span><\/b><\/p>\n<p>Anschlie&szlig;end finden Sie im Dialog <b>Neues Projekt <\/b>unter den g&auml;ngigen Sprachen wie <b>Visual C# <\/b>oder <b>Visual Basic <\/b>die Kategorie <b>Extensibility <\/b>mit den folgenden drei Eintr&auml;gen (siehe Bild 2):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_04\/pic_185_002.png\" alt=\"Verschiedene Vorlagen f&uuml;r das Entwickeln von Erweiterungen\" width=\"649,559\" height=\"352,2088\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Verschiedene Vorlagen f&uuml;r das Entwickeln von Erweiterungen<\/span><\/b><\/p>\n<ul>\n<li><b>Visual Basic Item Template<\/b>: Mit dieser Vorlage erstellen Sie Vorlagen f&uuml;r Visual-Studio-Elemente, die Sie &uuml;ber den Dialog <b>Neues Element <\/b>hinzuf&uuml;gen k&ouml;nnen. Wie Sie eine solche Vorlage erstellen, zeigen wir im Artikel <b>Visual Studio erweitern: Item Templates<\/b>.<\/li>\n<li><b>Visual Basic Project Template<\/b>: Mit dieser Vorlage erstellen Sie komplette Projektvorlagen. Die bestehenden Vorlagen decken soweit alle Bed&uuml;rfnisse ab, sodass wir diesen Vorlagentyp nicht in einem eigenen Artikel vorstellen werden.<\/li>\n<li><b>VSIX Project<\/b>: Das sind Projekte, die Funktionserweiterungen enthalten und die in eine <b>.vsix<\/b>-Datei verpackt werden. Auf diese Weise k&ouml;nnen Sie die Erweiterungen leicht an andere Entwickler weitergeben. Wie Sie ein solches Projekt anlegen, um Visual Studio Men&uuml;befehle hinzuzuf&uuml;gen, &uuml;ber die Sie dann eigene Funktionen aufrufen k&ouml;nnen, zeigen wir im vorliegenden Artikel.<\/li>\n<\/ul>\n<h2>VSIX-Projekte<\/h2>\n<p>Ein VSIX-Projekt ist ein Projekt, mit dem Sie Visual Studio erweitern k&ouml;nnen, und zwar um ein oder mehrere Funktionen, die der Benutzer dann auf verschiedene Arten aufrufen kann. Typische Beispiele sind Schaltfl&auml;chen, die Sie zu den Men&uuml;s von Visual Studio hinzuf&uuml;gen und die jederzeit aufgerufen werden k&ouml;nnen. Oder Sie erstellen Kontextmen&uuml;-Eintr&auml;ge, die Sie beispielsweise dem Projekt-Element im Projektmappen-Explorer oder Elementen wie einer Klasse oder einem Ordner eines Projekts zuweisen. Sie k&ouml;nnen auch sogenannte Tool Windows hinzuf&uuml;gen, mit denen Sie verschiedene Aufgaben erf&uuml;llen. Beispiele f&uuml;r Tool Windows sind die Toolbox, der Projektmappen-Explorer oder der Eigenschaften-Dialog. Wie Sie ein Tool Window erzeugen, lesen Sie Artikel <b>Visual Studio erweitern: Tool Windows<\/b>.<\/p>\n<p>In VSIX-Projekten k&ouml;nnen Sie noch mehr Erweiterungen zu Visual Studio hinzuf&uuml;gen, beispielsweise Markierungen von Code im Code-Editor.<\/p>\n<h2>VSIX-Projekt anlegen<\/h2>\n<p>Wir legen wie in der obigen Abbildung ein neues Objekt auf Basis der Vorlage <b>VSIX Projekt <\/b>namens <b>VSIXBeispiel <\/b>an. Dies erstellt ein neues Visual Studio-Projekt, das im Projektmappen-Explorer zun&auml;chst nur drei Elemente enth&auml;lt: <b>index.html<\/b>, <b>source.extension.vsixmanifest <\/b>und <b>stylesteet.css<\/b>. Wer schon einmal eine Internetseite programmiert hat, kennt die Dateiendungen <b>.html <\/b>und <b>.css <\/b>bereits. Bedeutet dies, dass die Benutzeroberfl&auml;che von VSIX-Erweiterungen auf HTML basiert Nein: Die <b>.html<\/b>-Datei und die <b>.css<\/b>-Datei liefern nur den Inhalt f&uuml;r die <b>Getting started<\/b>-Seite, die nach dem Erstellen des Projekts erscheint. Sie k&ouml;nnen also beide Dateien l&ouml;schen.<\/p>\n<p>Und wozu dient die verbleibende Datei <b>source.extension.vsixmanifest<\/b> Sie enth&auml;lt die Eigenschaften des Projekts beziehungsweise der zu erstellenden Erweiterung. Diese erscheinen nach einem Doppelklick auf den Eintrag wie in Bild 4. Hier k&ouml;nnen Sie beispielsweise den Produktnamen und die Beschreibung anpassen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_04\/pic_185_004.png\" alt=\"Eigenschaften der Erweiterung\" width=\"649,559\" height=\"553,7225\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Eigenschaften der Erweiterung<\/span><\/b><\/p>\n<h2>Einfachen Men&uuml;befehl hinzuf&uuml;gen<\/h2>\n<p>Den Ausgangspunkt einer Erweiterung bildet meist ein Element der Benutzeroberfl&auml;che wie etwa ein Men&uuml;-Eintrag. &Uuml;ber diesen rufen Sie dann entweder direkt die gew&uuml;nschte Funktion auf oder zeigen eine Benutzeroberfl&auml;che an, mit dem Sie die gew&uuml;nschte Funktion konfigurieren und starten k&ouml;nnen. Hier wollen auch wir beginnen und zun&auml;chst einmal einen Men&uuml;befehl zu Visual Studio hinzuf&uuml;gen.<\/p>\n<p>Dazu rufen wir den Dialog <b>Neues Element hinzuf&uuml;gen <\/b>auf, der uns im Bereich <b>Extensibility <\/b>verschiedene neue Elemente anbietet (siehe Bild 3). Wir f&uuml;gen ein Element des Typs <b>Custom Command <\/b>zu unserem Projekt hinzu und nennen es <b>Beispielcommand.vb<\/b>. Dies erstellt nach einer Weile eine neue Visual Basic-Klasse in unserem Projekt, aber nicht nur das: Wir finden auch eine ganze Reihe weiterer neuer Elemente im Projektmappen-Explorer. Es gibt einen Ordner namens <b>Resources<\/b>, in dem sich eine <b>.png<\/b>&#8211; und eine <b>.ico<\/b>-Datei befinden, zwei <b>.vb<\/b>-Dateien, einige Packages und vieles mehr.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_04\/pic_185_003.png\" alt=\"Elemente f&uuml;r Extensibility-Projekte\" width=\"649,559\" height=\"353,8976\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Elemente f&uuml;r Extensibility-Projekte<\/span><\/b><\/p>\n<p>Bevor wir Anpassungen vornehmen, starten wir das Projekt einfach einmal, was dazu f&uuml;hrt, dass eine neue Instanz von Visual Studio gestartet wird. Offensichtlich handelt es sich aber nicht nur um eine neue Instanz, denn Visual Studio fragt die kompletten Informationen ab, die sonst nur nach einer Neuinstallation ermittelt werden. Wir &uuml;bernehmen hier einfach die allgemeinen Einstellungen. Danach wird diese Instanz von Visual Studio vollst&auml;ndig gestartet. Hier finden wir allerdings keine Anzeichen einer Erweiterung &#8211; auch nicht, wenn wir ein neues Projekt anlegen.<\/p>\n<h2>Konfiguration der Erweiterung<\/h2>\n<p>An dieser Stelle ist es Zeit, einen genaueren Blick in die Datei <b>BeispielcommandPackage.vsct <\/b>zu werfen. Vielleicht finden wir hier einen Hinweis, wo unser Befehl zu finden ist. Bei dieser Datei handelt es sich um eine XML-Datei mit der Definition der Erweiterung und mit dem Element <b>CommandTable <\/b>als Stammelement:<\/p>\n<pre>&lt;xml version=\"1.0\" encoding=\"utf-8\"&gt;\r\n&lt;CommandTable xmlns=\"http:\/\/schemas.microsoft.com\/VisualStudio\/2005-10-18\/CommandTable\" xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;<\/pre>\n<p>Etwas weiter unten finden wir dann die f&uuml;r uns wichtigen Elemente. Diese befinden sich alle unterhalb des <b>Commands<\/b>-Elements. Das erste ist die Auflistung <b>Groups <\/b>mit zun&auml;chst einem <b>Group<\/b>-Element:<\/p>\n<pre>   &lt;Commands package=\"guidBeispielcommandPackage\"&gt;\r\n     &lt;Groups&gt;\r\n       &lt;Group guid=\"guidBeispielcommandPackageCmdSet\" id=\"MyMenuGroup\" priority=\"0x0600\"&gt;\r\n         &lt;Parent guid=\"guidSHLMainMenu\" id=\"IDM_VS_MENU_TOOLS\"\/&gt;\r\n       &lt;\/Group&gt;\r\n     &lt;\/Groups&gt;<\/pre>\n<p>Das <b>Group<\/b>-Element definiert mit <b>guid <\/b>eine eindeutige Kennzeichnung und mit <b>id <\/b>den Namen des Elements, hier <b>MyMenuGroup<\/b>. Das Attribut gibt die Position der Gruppe unter den bereits vorhandenen Gruppen an, hier <b>0x0600 <\/b>f&uuml;r die sechste Position. Darunter folgt das <b>Parent<\/b>-Element, welches angibt, in welches Men&uuml; die anzulegende Gruppe erstellt werden soll. In der Vorlage finden wir den Wert <b>IDM_VS_MENU_TOOLS<\/b>. Das entspricht dem Men&uuml; <b>Tools<\/b>, zu deutsch <b>Extras<\/b>, in Visual Studio. Hier ist eine &Uuml;bersicht der m&ouml;glichen Men&uuml;s:<\/p>\n<ul>\n<li><b>IDM_VS_MENU_FILE<\/b>: Datei&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/li>\n<li><b>IDM_VS_MENU_EDIT<\/b>: Bearbeiten<\/li>\n<li><b>IDM_VS_MENU_VIEW<\/b>: Ansicht<\/li>\n<li><b>IDM_VS_MENU_REFACTORING<\/b>: Umgestalten<\/li>\n<li><b>IDM_VS_MENU_PROJECT<\/b>: Projekt&nbsp;&nbsp;&nbsp;&nbsp;<\/li>\n<li><b>IDM_VS_MENU_BUILD<\/b>: Build&nbsp;&nbsp;&nbsp;&nbsp;<\/li>\n<li><b>IDM_VS_MENU_FORMAT<\/b>: Format<\/li>\n<li><b>IDM_VS_MENU_TOOLS<\/b>: Tools<\/li>\n<li><b>IDM_VS_MENU_EXTENSIONS<\/b>: Erweiterungen<\/li>\n<li><b>IDM_VS_MENU_WINDOW<\/b>: Fenster<\/li>\n<li><b>IDM_VS_MENU_ADDINS<\/b>: Add-Ins<\/li>\n<li><b>IDM_VS_MENU_COMMUNITY<\/b>: Community<\/li>\n<li><b>IDM_VS_MENU_HELP<\/b>: Help<\/li>\n<\/ul>\n<p>Anhand des Wertes in unserer Extension k&ouml;nnen wir bereits ablesen, dass sich unser Befehl im Men&uuml; <b>Extras <\/b>befindet. Das k&ouml;nnen wir auch schnell best&auml;tigen, wenn wir dieses Men&uuml; in der zum Debuggen gestarteten Instanz von Visual Studio &ouml;ffnen. Dort finden wir direkt in der zweiten Gruppe den Eintrag (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_04\/pic_185_005.png\" alt=\"Unser Men&uuml;-Eintrag\" width=\"649,559\" height=\"251,767\" \/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000185\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000185?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000185\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"dbce743e9d\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio bietet die M&ouml;glichkeit der Erweiterung durch verschiedene Elemente wie etwa Add-Ins, Templates oder Packages. Damit k&ouml;nnen Sie den Funktionsumfang von Visual Studio nach Ihren eigenen W&uuml;nschen erweitern. Ein sehr oft genutztes Beispiel ist etwa das Hinzuf&uuml;gen von Men&uuml;befehlen. Sie k&ouml;nnen neue Befehle zu den bestehenden Men&uuml;s des Hauptmen&uuml;s von Visual Studio hinzuf&uuml;gen oder auch Kontextmen&uuml;s erweitern. Sogar neue Men&uuml;s lassen sich zum Hauptmen&uuml; hinzuf&uuml;gen. Wie das geht und wie Sie dann auf Visual Studio zugreifen, zeigen wir Ihnen in diesem Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662019,66042019,44000013],"tags":[],"yst_prominent_words":[],"class_list":["post-55000185","post","type-post","status-publish","format-standard","hentry","category-662019","category-66042019","category-Visual_Studio_nutzen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000185"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000185\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000185"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}