Een extensie maken met een menuopdracht
In deze stapsgewijze handleiding ziet u hoe u een extensie maakt met een menuknop waarmee Kladblok wordt gestart.
Een menuopdracht maken
Maak een VSIX-project met de naam FirstMenuCommand. U vindt de VSIX-projectsjabloon in het dialoogvenster Nieuw project door te zoeken naar 'vsix'.
Wanneer het project wordt geopend, voegt u een aangepaste opdrachtitemsjabloon toe met de naam FirstCommand. Klik in Solution Explorermet de rechtermuisknop op het projectknooppunt en selecteer Add>New Item. Ga in het dialoogvenster Nieuw item toevoegen naar C#-items>Uitbreidbaarheid en selecteer Opdracht. Wijzig in het veld Naam onderaan het venster de bestandsnaam van de opdracht in FirstCommand.cs.
Bouw het project en begin met foutopsporing.
Het experimentele exemplaar van Visual Studio wordt weergegeven. Zie Het experimentele exemplaarvoor meer informatie over het experimentele exemplaar.
Open in het experimentele exemplaar het venster Extensions>Manage Extensions. U zou hier de FirstMenuCommand-extensie moeten zien. Als u Extensies beheren opent in uw werkexemplaar van Visual Studio, ziet u FirstMenuCommandniet.
Ga nu naar het menu Extra in het experimentele exemplaar. U ziet opdracht FirstCommand aanroepen. Op dit moment opent de opdracht een berichtvak met de tekst FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). In de volgende sectie ziet u hoe u Kladblok daadwerkelijk start met dit commando.
De menuopdrachthandler wijzigen
Laten we nu de opdrachthandler bijwerken om Kladblok te starten.
Stop de foutopsporing en ga terug naar uw werkexemplaren van Visual Studio. Open het bestand FirstCommand.cs en voeg de volgende using-instructie toe:
using System.Diagnostics;
Zoek de persoonlijke FirstCommand-constructor. Hier wordt de opdracht gekoppeld aan de opdrachtservice en wordt de opdrachthandler opgegeven. Wijzig als volgt de naam van de opdrachthandler in StartNotepad:
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); }
Verwijder de methode
Execute
en voeg de methodeStartNotepad
toe, waarmee Kladblok wordt gestart:private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }
Probeer het nu eens. Wanneer u begint met het opsporen van fouten in het project en klikt op Tools>FirstCommandaanroepen, wordt er een exemplaar van Kladblok weergegeven.
U kunt een exemplaar van de Process-klasse gebruiken om elk uitvoerbaar bestand uit te voeren, niet alleen Kladblok. Probeer het bijvoorbeeld met
calc.exe
.
De experimentele omgeving opschonen
Als u meerdere extensies ontwikkelt of alleen resultaten met verschillende versies van uw extensiecode verkent, werkt uw experimentele omgeving mogelijk niet meer zoals het zou moeten. In dit geval moet u het resetscript uitvoeren. Het heet Reset de Experimentele Instantie van Visual Studioen wordt geleverd als onderdeel van de Visual Studio SDK. Met dit script worden alle verwijzingen naar uw extensies uit de experimentele omgeving verwijderd, zodat u helemaal opnieuw kunt beginnen.
U kunt dit script op twee manieren openen:
Zoek op het bureaublad naar Reset het experimentele exemplaar van Visual Studio.
Voer vanaf de opdrachtregel het volgende uit:
<VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
Uw extensie implementeren
Nu uw hulpprogramma-extensie op de gewenste manier wordt uitgevoerd, is het tijd om deze te delen met uw vrienden en collega's. Dat is eenvoudig, zolang Visual Studio 2015 is geïnstalleerd. U hoeft ze alleen maar het .vsix-bestand te verzenden dat u hebt gemaakt. (Zorg ervoor dat u deze in de releasemodus bouwt.)
U vindt het bestand .vsix voor deze extensie in de map FirstMenuCommand bin. In het bijzonder, ervan uitgaande dat u de releaseconfiguratie hebt gebouwd, is deze in:
<codedirectory>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix
Als u de extensie wilt installeren, moet uw vriend alle geopende exemplaren van Visual Studio sluiten en vervolgens dubbelklikken op het bestand .vsix, dat de VSIX Installer-weergeeft. De bestanden worden gekopieerd naar de %LocalAppData%\Microsoft\VisualStudio<versie>\Extensions map.
Wanneer uw vriend Visual Studio opnieuw opent, vinden ze de extensie FirstMenuCommand in Tools>Extensions and Updates. Ze kunnen ook naar extensies en updates gaan om de extensie te verwijderen of uit te schakelen.
Volgende stappen
In dit scenario ziet u slechts een klein deel van wat u kunt doen met een Visual Studio-extensie. Hier volgt een korte lijst met andere (redelijk eenvoudige) dingen die u kunt doen met Visual Studio-extensies:
U kunt nog veel meer doen met een eenvoudige menuopdracht:
Uw eigen pictogram toevoegen: Pictogrammen toevoegen aan menuopdrachten
De tekst van de menuopdracht wijzigen: De tekst van een menuopdracht wijzigen
Een menusneltoets toevoegen aan een opdracht: Sneltoetsen binden aan menu-items
Verschillende soorten opdrachten, menu's en werkbalken toevoegen: menu's en opdrachten uitbreiden
Hulpprogrammavensters toevoegen en de ingebouwde Visual Studio-hulpprogrammavensters uitbreiden: vensters uitbreiden en aanpassen
Voeg IntelliSense, codesuggesties en andere functies toe aan bestaande code-editors: De editor en taalservices uitbreiden
Opties en eigenschappenpagina's en gebruikersinstellingen toevoegen aan uw extensie: Eigenschappen en het venster Eigenschappen uitbreiden en Gebruikersinstellingen en opties uitbreiden
Andere typen extensies vereisen iets meer werk, zoals het maken van een nieuw type project (Projecten uitbreiden) of het maken van een nieuw type editor (Aangepaste editors en ontwerpers maken).