Sdílet prostřednictvím


Vaše první rozšíření sady Visual Studio

Tento článek vás provede některými jednoduchými kroky pro zprovoznění prvního rozšíření sady Visual Studio. Rozšíření sady Visual Studio je napsané pomocí rozhraní .NET Framework a jazyka C#. Pokud už jste vývojář .NET, zjistíte, že psaní rozšíření je podobné psaní většiny dalších programů a knihoven .NET.

Rozšíření, které dnes napíšete, přidá příkaz, který při spuštění vloží nový identifikátor GUID do textového editoru. Je to jednoduché, užitečné a poskytuje dobrý úvod k různým aspektům vývoje rozšíření.

Pokud jste vizuálním učením, podívejte se na toto krátké video někoho, kdo sleduje tento kurz.

Než začnete psát první rozšíření sady Visual Studio (je to snadné, slibuji!), ujistěte se, že máte potřebné nástroje.

Vytvoření projektu

Můžete si vybrat z několika šablon projektů, takže chcete zvolit správnou volbu. Šablony použité v této komunitní sadě nástrojů mají v názvu moniker (Community).

Šablona projektu VSIX w/Command (Community) se dodává s příkazem, který umožňuje snadné spuštění odsud. Toto je skvělý výchozí bod pro většinu rozšíření. Pokud víte, že chcete okno nástroje, použijte šablonu projektu VSIX w/Tool Window (Community). Má také příkaz k otevření okna nástroje.

Použijte šablony Prázdný projekt VSIX (Community) nebo VSIX (Community) pro rozšíření pouze MEF nebo jiné pokročilé scénáře.

Tentokrát vyberete šablonu projektu VSIX w/Command (Community), jak je znázorněno na následujícím snímku obrazovky.

New Project Dialog showing VSIX project templates.

Po výběru šablony projektu musíte projektu pojmenovat. Zavolejte insertGuid.

Configure your new project.

Po stisknutí tlačítka Vytvořit byste měli skončit se základním projektem VSIX, který vypadá takto:

New project files and folders.

Důležité soubory

Pojďme si projít nejdůležitější soubory.

InsertGuidPackage.cs je to, co se označuje jako Package třída. Jeho InitializeAsync(...) metoda je volána sadou Visual Studio pro inicializaci vašeho rozšíření. Tady přidáte naslouchací procesy událostí a zaregistrujete příkazy, okna nástrojů, nastavení a další věci.

source.extension.vsixmanifest je soubor manifestu pro vaši příponu. Obsahuje meta data, jako je název a popis, ale také informace o tom, co rozšíření obsahuje.

VSCommandTable.vsct je soubor XML, kde jsou příkazy a vazby klíčů deklarativním způsobem definované, takže je lze zaregistrovat v sadě Visual Studio.

Commands/MyCommand.cs je obslužná rutina příkazu definovaného v souboru VSCommandTable.vsct . Určuje, co se stane, když se příkaz spustí kliknutím na tlačítko.

Úprava příkazu

Nejdřív se chcete ujistit, že váš příkaz má správný název, ikonu a pozici v systému nabídek sady Visual Studio.

Otevřete soubor VSCommandTable.vsct a najděte a <Group> a <Button>. Všimněte si, že tlačítko určuje skupinu jako nadřazenou a nadřazená položka skupiny je integrovaná nabídka VSMainMenu/Tools .

U vašeho rozšíření chcete , aby příkazové tlačítko Vložit identifikátor GUID bylo pod hlavní nabídkou Upravit , takže skupinu znovu nadřízejíte v nabídce Upravit. Nahraďte nástroje úpravou stejně jako v následujícím fragmentu kódu:

<Group guid="InsertGuid" id="MyMenuGroup" priority="0x0600">
  <Parent guid="VSMainMenu" id="Edit"/>
</Group>

Získáte úplnou technologii IntelliSense pro umístění, aby bylo snadné najít správné místo.

VSCT parent IntelliSense.

Také <Button> je potřeba aktualizovat. Novou ikonu získáte aktualizací id atributu elementu <Icon> na PasteAppend. <ButtonText> Aktualizujte text pomocí dobrého, popisného názvu a aktualizujte <LocCanonicalName> ho technickým názvem příkazu – toto je název, který se uživatelům zobrazí, když k vašemu příkazu přiřazují vlastní klávesové zkratky v dialogovém okně Nástroje > možnosti > prostředí > klávesnice.

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

Poznámka:

Vždy začněte <LocCanonicalName> tečkou. Zajišťuje, že žádný jiný text není automaticky předpřipraven a tečka se nezobrazí.

Můžete použít tisíce ikon dostupných v knihovně obrázků sady Visual Studio a dokonce získat náhled zobrazený v IntelliSense:

VSCT icon IntelliSense.

Teď jste aktualizovali název, ikonu a umístění našeho příkazu a je čas napsat kód pro vložení identifikátoru GUID do textového editoru.

Otevřete soubor /Commands/MyCommand.cs a upravte ho tak, aby při spuštění vložil nový identifikátor GUID:

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()); 
        }
    }
}

Objekt používáte VS k získání aktivního textového zobrazení editoru a následnému vložení identifikátoru GUID do pozice kurzoru textové vyrovnávací paměti.

Poznámka:

V této komunitní sadě nástrojů uvidíte await JoinableTaskFactory.SwitchToMainThreadAsync() a ThreadHelper.ThrowIfNotOnUIThread() na mnoha místech. Zpracovávají osvědčené postupy pro přepínání vláken a vy nemusíte vědět, kdy a jak je v tomto okamžiku používat – upozornění kompilátoru s opravami kódu (žárovky) to velmi usnadňuje.

První koncept našeho rozšíření je teď hotový a je čas ho otestovat.

Spuštění a ladění

Spuštění rozšíření je stejně snadné jako spuštění jakéhokoli jiného projektu .NET. Stačí stisknout klávesu F5 a spustit s připojeným ladicím programem nebo ctrl+F5 pro spuštění bez.

Tím spustíte experimentální instanci sady Visual Studio s nainstalovaným rozšířením. Experimentální instance je vaše běžná verze sady Visual Studio, ale s nainstalovanými samostatnými nastaveními a rozšířeními. Pomáhá udržovat věci oddělené.

Po spuštění experimentální instance byste měli vidět příkaz Vložit GUID v hlavní nabídce Upravit .

Insert GUID command located in the Edit main menu.

Otevřete libovolný textový soubor a spuštěním příkazu vložte nový identifikátor GUID. A je to!

Shrnutí

Teď jste vytvořili první rozšíření, které přidá příkazové tlačítko do hlavní nabídky a při spuštění komunikuje s textovým editorem.

Blahopřejeme!!

Kód pro toto rozšíření najdete v úložišti ukázek.