Nejčastější dotazy: Převádění doplňků na rozšíření VSPackage

Doplňky jsou nyní zastaralé.Chcete-li nové rozšíření sady Visual Studio, je třeba vytvořit VSPackage.Pokud již máte doplněk, může i nadále spouštět; Nicméně pokud chcete distribuovat, by měl převedete ji VSPackage.Zde najdete odpovědi na některé nejčastější dotazy o tom, jak převést na příponu VSPackage doplněk sady Visual Studio.

Důležitá poznámkaDůležité

V řadě případů můžete jednoduše přenést doplněk kódu do projektu VSPackage.Můžete získat objekt automatizace DTE voláním GetService v Initialize metody.

DTE2 dte = (DTE2)GetService(typeof(DTE));

Další informace naleznete v tématu jak ve VSPackage spuštěním Můj přidat kód? níže.

Jaký software potřebujete pro vývoj rozšíření VSPackage?

Je nutné nainstalovat sadu Visual Studio 2013 SDK kromě Professional, Premium nebo Ultimate edici sady Visual Studio 2013.Můžete stáhnout sadu SDK z Visual Studio 2013 SDK stránku na webu Microsoft Download Center.Doporučujeme, abyste před instalací nainstalovat sadu SDK Visual Studio 2013 Update 2.

Kde je v dokumentaci VSPackage?

Začít s Rozšíření Visual Studio – přehled.Další články o vývoji pro VSPackage jsou uspořádány pod že jeden.

Můžete převést svůj projekt doplněk VSPackage projektu?

Projekt doplněk nelze převést na projekt VSPackage, protože mechanismus použitý v projektech VSPackage nejsou stejné jako v doplňku projekty.Šablona projektu VSPackage má velké množství kódu, která usnadňuje poměrně snadné dosáhnout a spuštěna jako VSPackage rozšíření.

Jak začít, vývoje rozšíření VSPackage?

Šablona projektu pro rozšíření VSPackage obsahuje prvky, které potřebujete.Zde je, jak vytvořit VSPackage, který má příkaz nabídky:

Chcete-li VSPackage, který se má příkaz nabídky

  1. Vytvořte projekt Visual Studio balíčku s názvem TestVSPackage.(Soubor, nový, projektu, nebo typu projektu v Snadné spuštění okna).V nový projekt dialogové okno rozbalte ostatní typy projektů, rozšiřitelnost a vyberte možnost balíček Visual Studio.Pojmenujte tento projekt TestVSPackage a zadejte umístění pro něj.

  2. Průvodce balíčku sady Visual Studio se zobrazí.Na jeho vyberte programovací jazyk stránky, vyberte požadovaný jazyk C#.Zachovat vygenerovat nový klíč vybrána možnost.Na VSPackage možnosti stránky, vyberte možnost příkaz nabídky.Klikněte na tlačítko Dokončit.

  3. Stisknutím klávesy F5 k vytvoření a spuštění projektu v režimu ladění.

    Zobrazí se druhou instanci sady Visual Studio.Tato druhá instance se označuje jako pokusné instance, a nemusí mít stejné nastavení jako instanci sady Visual Studio, kterou používáte k psaní kódu.Při prvním spuštění pokusné instance budou vyzváni k přihlášení k aplikaci VS Online a zadejte motiv a profilu.

    Na nástroje nabídky (v pokusné instance) by se mělo objevit tlačítko s názvem název mé příkazu.Vyberete-li toto tlačítko, se mají zobrazit zprávu: v rámci TestVSPackagePackage.MenuItemCallback().

Jak lze spustit svůj kód doplněk ve VSPackage?

Doplněk kód obvykle běží v jedním ze dvou způsobů:

  • Aktivované příkaz nabídky (kód je v IDTCommandTarget.Exec metoda)

  • Automaticky při spuštění (kód je v OnConnection obslužnou rutinu události.)

Lze provádět stejné akce ve VSPackage.Chcete-li přidat některé přidat kód v metodě zpětného volání:

K provedení příkazu nabídky ve VSPackage

  1. Vytvořte VSPackage, který má příkaz nabídky.(Viz jak zahájit vývoj rozšíření VSPackage?.)

  2. Otevřete soubor, který obsahuje definici VSPackage.(V projektu jazyka C#, má < název projektu >Package.cs.)

  3. Přidejte následující using příkazy k souboru:

    using EnvDTE;
    using EnvDTE80;
    
  4. Najít MenuItemCallback metody.Přidejte volání GetService Chcete-li získat DTE2 objekt:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Přidejte kód, který váš doplněk byl v jeho IDTCommandTarget.Exec metody.Například, zde je kód, který přidá nové podokno na výstupu okno a vytiskne "Některé Text" v novém podokně.

    private void MenuItemCallback(object sender, EventArgs e)
    {
        DTE2 dte = (DTE2) GetService(typeof(DTE));
        OutputWindow outputWindow = dte.ToolWindows.OutputWindow;
    
        OutputWindowPane outputWindowPane = outputWindow.OutputWindowPanes.Add("A New Pane");
        outputWindowPane.OutputString("Some Text");
    }
    
  6. Vytvoření a spuštění tohoto projektu.Stiskněte klávesu F5 nebo vyberte Start na ladění panelu nástrojů.V pokusné instanci sady Visual Studio nástroje nabídky by měla být tlačítko s názvem název mé příkazu.Při výběru toto tlačítko je slova některé Text se mají zobrazit výstupu podokna.(Může být nutné otevřít výstupu okna.)

Může také obsahovat spustit při spuštění kódu.Tento postup se obecně nedoporučuje pro VSPackage rozšíření.Pokud příliš mnoho přípon se pokusí načíst při spuštění sady Visual Studio, mohou být výrazně delší čas zahájení.Doporučeno je načíst VSPackage automaticky pouze v případě, že je určitá podmínka splněna (např. řešení otevíraný).

Tento postup ukazuje, jak umožnit spuštění kódu doplněk ve VSPackage, který načítá automaticky při otevření řešení:

K autoload VSPackage

  1. Vytvořte projekt Visual Studio balíčku.(Kroky, které provedete to tak, podívejte se na téma jak zahájit vývoj rozšíření VSPackage?.Pojmenujte tento projekt TestAutoload a zadejte umístění pro něj.

  2. Průvodce balíčku sady Visual Studio se zobrazí.Na jeho vyberte programovací jazyk stránky, vyberte požadovaný jazyk C# a udržovat vygenerovat nový klíč vybrána možnost.Zvolte možnost Dokončit.

  3. Otevřete TestAutoloadPackage.cs.Vyhledejte řádek, kde je deklarován třída balíčku:

    public sealed class <name of your package>Package : Package
    
  4. Nad tento řádek je sada atributů.Přidejte tento atribut:

    [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
    
  5. Nastavení zarážky Initialize() metody a začněte ladění (F5).

  6. V pokusné instanci otevřete projekt.VSPackage má načíst a vaše zarážka by měl být přístupů.

Můžete zadat jiných kontextech, ve kterém se má načíst vaše VSPackage pomocí oblasti UIContextGuids80.Další informace naleznete v tématu Jak: Autoload VSPackage.

Jak lze získat objekt DTE?

Není-li doplněk zobrazen uživatelského rozhraní – například příkazy nabídky, tlačítek na panelu nástrojů nebo nástroje systému windows – je možné použít váš kód jako – je tak dlouho, jak získat objekt automatizace DTE z VSPackage.Zde je jak:

Chcete-li získat objekt DTE z VSPackage

  1. Ve VSPackage řešení vyhledejte < název projektu >Package.cs souboru.Toto je třída, která se odvozuje od Package; může pomoci vám interakci se sadou Visual Studio.V takovém případě použijete jeho GetService Chcete-li získat DTE2 objektu.

  2. Přidat tyto using příkazů:

    using EnvDTE;
    using EnvDTE80;
    
  3. Najít Initialize metody.Tato metoda zpracovává příkaz, který jste zadali v Průvodci balíčku.Přidejte volání GetService získat objekt DTE:

    DTE dte = (DTE)GetService(typeof(DTE));
    

Jakmile máte DTE objekt automatizace zbytek kódu doplněk můžete přidat do projektu.Potřebujete-li DTE2 objekt, můžete můžete stejný úkol provést.

Jak ji změním příkazy nabídky a tlačítka na panelu nástrojů v mé doplňku styl VSPackage?

Rozšíření VSPackage pomocí souboru .vsct vytvořit většinu příkazů nabídky, panely nástrojů, tlačítka na panelu nástrojů a dalších uživatelského rozhraní.Šablona projektu VSPackage poskytuje možnost vytvořit příkaz na nástroje nabídky.Další informace naleznete v tématu Názorný postup: Vytváření pomocí šablony balíček Visual Studio příkazu nabídky.

Další informace o souborech .vsct naleznete v tématu Jak přidat prvky uživatelského rozhraní IDE VSPackages.Návody, které ukazují, jak použít soubor .vsct Chcete-li přidat položky nabídky, panely nástrojů a tlačítka na panelu nástrojů naleznete v tématuNávody pro příkazy, nabídky a panely nástrojů

Jak přidat vlastní nástroje systému windows způsobem VSPackage?

Šablona projektu VSPackage poskytuje možnost vytvořit okno nástroje.Další informace naleznete v tématu Nástroje systému Windows a články v souladu s ní, zejména Jak: vytvořit okno nástroje.

Jak změním sady Visual Studio windows způsobem VSPackage?

Pokud váš doplněk spravuje windows sady Visual Studio, je kód by měly fungovat v VSPackage.Například tento postup popisuje způsob přidání kódu, který spravuje seznam úkolů k MenuItemCallback metoda VSPackage.

Vložit okno správy kódu z doplňku do VSPackage

  1. Vytvořit VSPackage, který obsahuje příkaz nabídky, jako v jak zahájit vývoj rozšíření VSPackage? oddílu.

  2. Otevřete soubor, který obsahuje definici VSPackage.(V projektu jazyka C#, má < název projektu >Package.cs.)

  3. Přidat tyto using příkazů:

    using EnvDTE;
    using EnvDTE80;
    
  4. Najít MenuItemCallback metody.Přidejte volání GetService Chcete-li získat DTE2 objekt:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Přidejte kód z tohoto doplňku.Můžete například zde je kód, který přidá nové úlohy, které seznam úkolů, zobrazí počet úloh a poté odstraní jeden úkol.

    private void MenuItemCallback(object sender, EventArgs e) 
    {
        DTE2 dte = (DTE2) GetService(typeof(DTE)); 
    
        TaskList tl = (TaskList)dte.ToolWindows.TaskList; 
        askItem tlItem; 
    
        // Add a couple of tasks to the Task List. 
        tlItem = tl.TaskItems.Add(" ", " ", "Test task 1.",  
            vsTaskPriority.vsTaskPriorityHigh, vsTaskIcon.vsTaskIconUser, 
            true, "", 10, true, true);
        tlItem = tl.TaskItems.Add(" ", " ", "Test task 2.", 
            vsTaskPriority.vsTaskPriorityLow, vsTaskIcon.vsTaskIconComment, true, "", 20, true,true);
    
        // List the total number of task list items after adding the new task items.
        System.Windows.Forms.MessageBox.Show("Task Item 1 description: "+tl.TaskItems.Item(2).Description);
        System.Windows.Forms.MessageBox.Show("Total number of task items: "+tl.TaskItems.Count); 
    
        // Remove the second task item. The items list in reverse numeric order. 
        System.Windows.Forms.MessageBox.Show("Deleting the second task item");
        tl.TaskItems.Item(2).Delete();
        System.Windows.Forms.MessageBox.Show("Total number of task items: "+tl.TaskItems.Count); 
    }
    

Jak spravovat projekty a řešení v VSPackage?

Pokud váš doplněk spravuje projektů a řešení, je kód by měly fungovat v VSPackage.Tento postup můžete například ukazuje, jak přidat kód, který získá projekt při spuštění.

  1. Vytvořit VSPackage, který obsahuje příkaz nabídky, jako v jak zahájit vývoj rozšíření VSPackage? oddílu.

  2. Otevřete soubor, který obsahuje definici VSPackage.(V projektu jazyka C#, má < název projektu >Package.cs.)

  3. Přidat tyto using příkazů:

    using EnvDTE;
    using EnvDTE80;
    
  4. Najít MenuItemCallback metody.Přidejte volání GetService Chcete-li získat DTE2 objekt:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Přidejte kód z tohoto doplňku.Například následující kód získá název projektu při spuštění v řešení.(Multi-projektovém řešení je třeba otevřít při spuštění tohoto balíčku.)

    private void MenuItemCallback(object sender, EventArgs e)
    {
        DTE2 dte = (DTE2) GetService(typeof(DTE)); 
    
        SolutionBuild2 sb = (SolutionBuild2)dte.Solution.SolutionBuild; 
        Project startupProj; 
        string msg = "";
    
        foreach (String item in (Array)sb.StartupProjects) 
        {
            msg += item; 
        }
        System.Windows.Forms.MessageBox.Show("Solution startup Project: "+msg); 
        startupProj = dte.Solution.Item(msg); 
        System.Windows.Forms.MessageBox.Show("Full name of solution's startup project: "+"/n"+startupProj.FullName); 
    }
    

Jak nastavit klávesové zkratky ve VSPackage?

Můžete použít <KeyBindings> element .vsct souboru.V následujícím příkladu klávesová zkratka pro příkaz idCommand1 je Alt + A a klávesové zkratky pro příkaz idCommand2 je Alt + Ctrl + A.Všimněte si syntaxe názvy klíčů.

<KeyBindings>
    <KeyBinding guid="MyProjectCmdSet" id="idCommand1" editor="guidVSStd97" key1="A" mod1="ALT" />
    <KeyBinding guid="MyProjectCmdSet" id="idCommand2" editor="guidVSStd97" key1="A" mod1="CONTROL" mod2="ALT" />
</KeyBindings>

Jak zpracovat události automatizace ve VSPackage?

Můžete zpracovávat události automatizace ve VSPackage stejným způsobem jako doplněk.Následující kód ukazuje způsob zpracování OnItemRenamed události.(V tomto příkladu předpokládá, že jste již dostali DTE objektu.)

Events2 dteEvents = (Events2)dte.Events;
dteEvents.ProjectItemsEvents.ItemRenamed += listener1.OnItemRenamed; 
. . .
public void OnItemRenamed(EnvDTE.ProjectItem projItem, string oldName) 
{
    string s = "[Event] Renamed " + oldName + " to " + Path.GetFileName(projItem.get_FileNames(1) + " in project " + projItem.ContainingProject.Name; 
}