Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver några enkla steg för att få igång ditt första Visual Studio-tillägg. Ett Visual Studio-tillägg skrivs med .NET Framework och C#. Om du redan är .NET-utvecklare ser du att skrivtillägg liknar att skriva de flesta andra .NET-program och -bibliotek.
Tillägget som du ska skriva i dag lägger till ett kommando som infogar ett nytt guid i textredigeraren när det körs. Det är enkelt, användbart och ger en bra introduktion till de olika aspekterna av tilläggsutveckling.
Om du är en visuell inlärare, titta gärna på den här korta videon med någon som följer guiden.
Innan du börjar skriva ditt första Visual Studio-tillägg (det är enkelt, jag lovar!), se till att du har de verktyg som behövs.
Skapa projektet
Det finns flera projektmallar att välja mellan, så du vill göra rätt val. De mallar som används i den här community-verktygslådan har alla moniker (community) i namnet.
Mallen VSIX Project w/Command (Community) levereras med ett kommando som är integrerat, vilket gör det enkelt att komma igång från den utgångspunkten. Detta är en bra utgångspunkt för de flesta tillägg. Om du vet att du vill ha ett verktygsfönster använder du mallen VSIX Project w/Tool Window (Community). Den har också ett kommando för att öppna verktygsfönstret.
Använd mallarna Empty VSIX Project (Community) eller VSIX Project (Community) för tillägg med endast MEF eller andra avancerade scenarier.
Den här gången väljer du mallen VSIX Project w/Command (Community) enligt skärmbilden nedan.
När du har valt projektmallen måste du ge projektet ett namn. Kalla det InsertGuid.
När du har klickat på knappen Skapa bör du få ett grundläggande VSIX-projekt som ser ut så här:
Viktiga filer
Låt oss gå över de viktigaste filerna.
InsertGuidPackage.cs kallas för klassen Package. Metoden InitializeAsync(...) anropas av Visual Studio för att initiera tillägget. Härifrån lägger du till händelselyssnare och registrerar kommandon, verktygsfönster, inställningar och annat.
source.extension.vsixmanifest är manifestfilen för tillägget. Den innehåller metadata som rubrik och beskrivning, men även information om vad tillägget innehåller.
VSCommandTable.vsct är en XML-fil där kommandon och nyckelbindningar definieras deklarativt, så att de kan registreras med Visual Studio.
Kommandon/MyCommand.cs är kommandohanteraren för kommandot som definierats i VSCommandTable.vsct-filen . Den styr vad som händer när kommandot körs genom att klicka på knappen.
Ändra kommandot
Först vill du kontrollera att kommandot har rätt namn, ikon och position i Visual Studio-menysystemet.
Öppna filen VSCommandTable.vsct och leta upp en <Group> och en <Button>. Observera hur knappen anger att gruppen är dess förälder och gruppens förälder är den inbyggda menyn VSMainMenu/Tools.
För tillägget vill du att kommandoknappen Infoga GUID ska vara under huvudmenyn Redigera , så att du kommer att överordna gruppen på redigera-menyn igen. Ersätt verktyg med Redigera precis som i följande kodfragment:
<Group guid="InsertGuid" id="MyMenuGroup" priority="0x0600">
<Parent guid="VSMainMenu" id="Edit"/>
</Group>
Du får full IntelliSense för placeringarna för att göra det enkelt att hitta den rätta platsen.
Behöver <Button> uppdateras också. Du ger den en ny ikon genom att uppdatera id attributet för elementet <Icon> till PasteAppend.
<ButtonText> Uppdatera texten med ett bra, beskrivande namn och uppdatera <LocCanonicalName> med det tekniska namnet på kommandot – det här är det namn som visas för användarna när de tilldelar anpassade kortkommandon till kommandot i dialogrutan Verktyg > alternativ > miljötangentbord>.
<Button guid="InsertGuid" id="MyCommand" priority="0x0100" type="Button">
<Parent guid="InsertGuid" id="MyMenuGroup" />
<Icon guid="ImageCatalogGuid" id="PasteAppend" />
<CommandFlag>IconIsMoniker</CommandFlag>
<Strings>
<ButtonText>Insert GUID</ButtonText>
<LocCanonicalName>.Edit.InsertGuid</LocCanonicalName>
</Strings>
</Button>
Anmärkning
Börja <LocCanonicalName> alltid med ett punkttecken. Det säkerställer att ingen annan text läggs till automatiskt och att punkten inte visas.
Du kan använda de tusentals ikoner som är tillgängliga i Visual Studios bildbibliotek och till och med få en förhandsgranskning som visas i IntelliSense:
Nu har du uppdaterat namnet, ikonen och platsen för kommandot och det är dags att skriva kod för att infoga guid i textredigeraren.
Öppna filen /Commands/MyCommand.cs och ändra den för att infoga ett nytt guid när den körs:
using System;
using Community.VisualStudio.Toolkit;
using EnvDTE;
using Microsoft.VisualStudio.Shell;
using Task = System.Threading.Tasks.Task;
namespace InsertGuid
{
[Command(PackageIds.MyCommand)]
internal sealed class MyCommand : BaseCommand<MyCommand>
{
protected override async Task ExecuteAsync(OleMenuCmdEventArgs e)
{
await Package.JoinableTaskFactory.SwitchToMainThreadAsync();
DocumentView docView = await VS.Documents.GetActiveDocumentViewAsync();
if (docView?.TextView == null) return;
SnapshotPoint position = docView.TextView.Caret.Position.BufferPosition;
docView.TextBuffer?.Insert(position, Guid.NewGuid().ToString());
}
}
}
Du använder VS-objektet för att hämta den aktiva redigerarens textvy och infoga GUID vid dess textbufferts markörposition.
VS är ett statiskt objekt som ger åtkomst till Visual Studio IDE-gränssnittselement. se dess definition i VS.cs i VSIX Community Toolkit GitHub-lagringsplatsen.
Anmärkning
Du kommer att se await JoinableTaskFactory.SwitchToMainThreadAsync() och ThreadHelper.ThrowIfNotOnUIThread() på många platser i den här community-verktygslådan. De hanterar bästa praxis för trådväxling och du behöver för tillfället inte veta när och hur du ska använda dem - kompilatorvarningar med kodkorrigeringar (glödlampor) gör det mycket enkelt.
Det första utkastet till vårt tillägg är nu klart och det är dags att testa det.
Köra och felsöka
Det är lika enkelt att köra tillägget som att köra andra .NET-projekt. Tryck bara på F5 för att köra med felsökningsprogrammet kopplat eller Ctrl +F5 för att köra utan.
Om du gör det startas den experimentella instansen av Visual Studio med tillägget installerat. Den experimentella instansen är din vanliga version av Visual Studio, men med separata inställningar och tillägg installerade. Det hjälper till att hålla saker åtskilda.
När den experimentella instansen startar bör du se kommandot Infoga GUID på huvudmenyn Redigera .
Öppna valfri textbaserad fil och kör kommandot för att infoga ett nytt guid. Det var allt!
Sammanfattning
Nu har du skapat ditt första tillägg som lägger till en kommandoknapp i huvudmenyn och interagerar med textredigeraren när det körs.
Grattis!!
Du hittar koden för det här tillägget i exempellagringsplatsen.