Udostępnij za pośrednictwem


Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage

Dodatki są teraz przestarzały.Aby utworzyć nowe rozszerzenie programu Visual Studio, musisz utworzyć VSPackage.Jeśli masz już dodatek, może nadal działać; Jednak aby rozpowszechnić je, należy ją przekonwertować na VSPackage.Poniżej przedstawiono odpowiedzi na często zadawane pytania dotyczące jak rozszerzenie VSPackage przekonwertować dodatku programu Visual Studio.

Ważna uwagaWażne

W wielu przypadkach można po prostu przenieś swój kod dodatek do projektu VSPackage.Obiekt automatyzacji DTE można uzyskać przez wywołanie metody GetService w Initialize metody.

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

Aby uzyskać więcej informacji, zobacz jak mogę uruchomić mój kod dodatku w VSPackage? poniżej.

Jakie oprogramowanie należy do opracowywania rozszerzeń VSPackage?

Należy zainstalować program Visual Studio 2013 SDK oprócz Professional, Premium lub Ultimate wydania programu Visual Studio 2013.Możesz pobrać z zestawu SDK programu Visual Studio 2013 SDK strony w witrynie sieci Web Microsoft Download Center.Firma Microsoft zaleca, zainstaluj zestaw SDK, przed zainstalowaniem programu Visual Studio 2013 Update 2.

Gdzie znajduje się w dokumentacji VSPackage?

Zaczyna się od Rozszerzanie programu Visual Studio, omówienie.Inne artykuły dotyczące projektowania VSPackage są zorganizowane pod tym węzłem.

W projekcie VSPackage można przekonwertować mojego projektu dodatek?

Nie można przekonwertować projektu dodatek do projektu VSPackage, ponieważ mechanizmy używane w projektach VSPackage nie są takie same, jak w projektach dodatku.Szablon projektu VSPackage ma wiele kodu, który ułatwia stosunkowo szybkie uruchamianie jako rozszerzenie VSPackage.

Jak rozpocząć tworzenie rozszerzeń VSPackage

Szablon projektu dla rozszerzeń VSPackage zawiera elementy, które są potrzebne.Oto, jak utworzyć VSPackage, zawierającej polecenie menu:

Aby VSPackage, zawierającej polecenia menu

  1. Utwórz projekt pakietu Visual Studio o nazwie TestVSPackage.(Plik, nowy, projektu, czy typ projektu w Szybkie uruchamianie okna).W nowy projekt okna dialogowego rozwiń inne typy projektów, rozszerzania i wybierz pakietu Visual Studio.Nadaj nazwę projektowi TestVSPackage i określ lokalizację dla niego.

  2. Kreator tworzenia pakietu Visual Studio pojawi się.Na jego wybierz język programowania zaznacz opcję C# jako język.Zachowaj wygenerować nowy klucz opcja jest zaznaczona.Na opcje VSPackage zaznacz opcję polecenie.Wybierz przycisk Zakończ.

  3. Naciśnij klawisz F5, aby skompilować i uruchomić projekt w trybie debugowania.

    Zostanie wyświetlone drugie wystąpienie programu Visual Studio.To drugie wystąpienie jest wywoływana doświadczalnych wystąpienie i może nie mieć takich samych ustawień, gdy wystąpienie programu Visual Studio używasz do pisania kodu.Uruchom wystąpienie doświadczalnych, po raz pierwszy użytkownik jest proszony Aby zarejestrować się w programie VS Online oraz określić swoje motywu i profilu.

    Na narzędzia menu (w tym wystąpieniu doświadczalnych) powinny być widoczne przycisk o nazwie polecenie Moja nazwa.Po wybraniu tego przycisku powinien pojawić się komunikat: wewnątrz TestVSPackagePackage.MenuItemCallback().

Jak mogę uruchomić mój kod dodatku w VSPackage?

Dodatek Kod jest zwykle uruchamiane w jednym z następujących sposobów:

  • Wywoływane przez polecenie menu (kod znajduje się w IDTCommandTarget.Exec metody)

  • Automatycznie po ponownym uruchomieniu komputera (kod znajduje się w OnConnection programu obsługi zdarzeń.)

Można wykonać te same elementy w VSPackage.Poniżej przedstawiono sposób dodawania kodu dodatku niektóre metody wywołania zwrotnego:

Do wykonania polecenia menu w pakiecie VSPackage

  1. Utwórz VSPackage, zawierającej polecenie menu.(Zobacz jak rozpocząć tworzenie rozszerzeń VSPackage?.)

  2. Otwórz plik, który zawiera definicję VSPackage.(W języku C# projektu, cechuje się < swoją nazwę projektu >Package.cs.)

  3. Dodaj następujący using instrukcji do pliku:

    using EnvDTE;
    using EnvDTE80;
    
  4. Znajdź MenuItemCallback metody.Dodać wywołanie GetService można pobrać DTE2 obiektu:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Dodaj kod, który dodatek mieli w jego IDTCommandTarget.Exec metody.Na przykład, Oto niektóre kodu, który dodaje nowe okienko do danych wyjściowych okna i wydruku "Niektóre Text" w okienku.

    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. Tworzenie i uruchamianie tego projektu.Naciśnij klawisz F5 lub wybierz Start na debugowanie narzędzi.W wystąpieniu doświadczalnych programu Visual Studio narzędzia menu musi mieć przycisk o nazwie polecenie Moja nazwa.Po wybraniu tego przycisku słowa dowolny tekst mają pojawiać się w danych wyjściowych okienka.(Może być konieczne Otwórz danych wyjściowych okna.)

Może mieć również kodu po ponownym uruchomieniu komputera.Jednak ta metoda jest zwykle nie zaleca się VSPackage rozszerzeń.Jeśli zbyt wiele rozszerzeń próba załadowania po uruchomieniu programu Visual Studio, godziny rozpoczęcia mogą stać się znacznie dłużej.Lepsze praktyki jest automatycznie załadować VSPackage tylko wtedy, gdy niektóre warunku (na przykład rozwiązanie otwieranego).

Za pomocą poniższej procedury do uruchomienia dodatku kodu w VSPackage, ładującego automatycznie po otwarciu rozwiązania:

Do automatycznego ładowania VSPackage

  1. Utwórz projekt pakietu Visual Studio.(W tym celu znajduje się jak rozpocząć tworzenie rozszerzeń VSPackage?.Nadaj nazwę projektowi TestAutoload i określ lokalizację dla niego.

  2. Kreator tworzenia pakietu Visual Studio pojawi się.Na jego wybierz język programowania zaznacz C# jako język a zachowania wygenerować nowy klucz opcja jest zaznaczona.Wybierz Zakończ.

  3. Otwórz TestAutoloadPackage.cs.Znajdź wiersz, w którym zadeklarowano klasę pakietu:

    public sealed class <name of your package>Package : Package
    
  4. Powyżej tego wiersza to zestaw atrybutów.Dodaj ten atrybut:

    [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
    
  5. Ustawienia punktu przerwania Initialize() metody i uruchomienia debugowania (F5).

  6. W przypadku eksperymentalnych Otwórz projekt.Ładowania VSPackage, a Twoje punkt przerwania powinna trafić.

Można określić innych kontekstach, w którym można załadować swoje VSPackage przy użyciu pól UIContextGuids80.Aby uzyskać więcej informacji, zobacz Jak: Autoload VSPackage.

Jak mogę uzyskać obiekt DTE?

Jeśli Twój dodatku nie wyświetla interfejsu użytkownika — na przykład poleceń menu, przycisków na pasku narzędzi lub narzędzia windows — można użyć jako kodu — jest tak długo, jak pobrać obiekt automatyzacji DTE z VSPackage.Oto, jak:

Aby pobrać DTE ze VSPackage

  1. Rozwiązanie VSPackage poszukaj < Nazwa projektu >Package.cs pliku.Jest to klasa pochodzącą z Package; może ona pomóc w interakcję z programu Visual Studio.W takim przypadku można użyć jej GetService można pobrać DTE2 obiektu.

  2. Dodaj te using instrukcji:

    using EnvDTE;
    using EnvDTE80;
    
  3. Znajdź Initialize metody.Ta metoda obsługuje polecenie podany w kreatorze pakietu.Dodać wywołanie GetService można pobrać obiekt DTE:

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

Po utworzeniu DTE obiektu automatyzacji, możesz dodać pozostałej części kodu dodatek do projektu.Jeśli konieczne jest DTE2 obiektu, należy wykonać jedną czynność.

Jak zmienić poleceń menu i przycisków na pasku narzędzi w mój dodatek do stylu VSPackage?

Rozszerzenia VSPackage Użyj pliku .vsct, aby utworzyć większość poleceń menu, paski narzędzi, przyciski paska narzędzi i innych interfejsu użytkownika.Szablon projektu VSPackage umożliwia tworzenie polecenia na narzędzia menu.Aby uzyskać więcej informacji, zobacz Instruktaż: Tworzenie polecenia Menu przy użyciu szablonu pakietu Visual Studio.

Aby uzyskać więcej informacji o plikach .vsct, zobacz Jak dodać elementy interfejsu użytkownika VSPackages IDE.Aby uzyskać przewodniki, które pokazują, jak można użyć pliku .vsct do dodania pozycji menu, paski narzędzi i przyciski paska narzędzi zobaczInstruktaże dla poleceń, menu i paski narzędzi

Jak dodać niestandardowe narzędzia windows w ten sposób VSPackage?

Szablon projektu VSPackage z opcją można utworzyć okna narzędzia.Aby uzyskać więcej informacji, zobacz Narzędzie systemu Windows. i artykuły w nim, zwłaszcza Jak: Tworzenie okna narzędzia.

Jak zarządzać systemu windows programu Visual Studio w ten sposób VSPackage?

Jeśli Twój dodatku zarządza systemu windows programu Visual Studio, kod dodatku powinny działać w VSPackage.Na przykład za pomocą poniższej procedury do dodania kodu, który zarządza listy zadań do MenuItemCallback metody VSPackage.

Aby wstawić kod zarządzania systemem Windows z dodatek do pakietu VSPackage

  1. Utwórz VSPackage, zawierającej polecenia menu, jak w jak rozpocząć tworzenie rozszerzeń VSPackage? sekcji.

  2. Otwórz plik, który zawiera definicję VSPackage.(W języku C# projektu, cechuje się < swoją nazwę projektu >Package.cs.)

  3. Dodaj te using instrukcji:

    using EnvDTE;
    using EnvDTE80;
    
  4. Znajdź MenuItemCallback metody.Dodać wywołanie GetService można pobrać DTE2 obiektu:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Dodaj kod z dodatku.Na przykład, Oto niektóre kodu, który dodaje nowe zadania, aby listy zadań, wyświetla liczbę zadań i usuwa jedno zadanie.

    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 zarządzać projektów i rozwiązań w pakiecie VSPackage

Jeśli Twój dodatku zarządza projektów i rozwiązań, kod dodatku powinny działać w VSPackage.Na przykład tej procedury pokazuje, jak dodać kod, który uzyskuje projekt startowy.

  1. Utwórz VSPackage, zawierającej polecenia menu, jak w jak rozpocząć tworzenie rozszerzeń VSPackage? sekcji.

  2. Otwórz plik, który zawiera definicję VSPackage.(W języku C# projektu, cechuje się < swoją nazwę projektu >Package.cs.)

  3. Dodaj te using instrukcji:

    using EnvDTE;
    using EnvDTE80;
    
  4. Znajdź MenuItemCallback metody.Dodać wywołanie GetService można pobrać DTE2 obiektu:

    DTE2 dte = (DTE2)GetService(typeof(DTE));
    
  5. Dodaj kod z dodatku.Na przykład następujący kod pobiera nazwę projektu uruchamiania w rozwiązaniu.(Rozwiązanie wielu projektu musi być otwarty po uruchomieniu tego pakietu.)

    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 ustawić skróty klawiaturowe dostępne w pakiecie VSPackage?

Możesz użyć <KeyBindings> element pliku .vsct.W poniższym przykładzie skrótu klawiaturowego dla polecenia idCommand1 jest Alt + A i skrótu klawiaturowego dla polecenia idCommand2 jest Alt + Ctrl + A.Zwróć uwagę na to Składnia nazwy kluczy.

<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 obsługiwać zdarzenia automatyzacji w VSPackage?

Możesz obsługi zdarzeń automatyzacji w VSPackage w taki sam sposób, jak w dodatku.Poniższy kod pokazuje sposób obsługi OnItemRenamed zdarzenia.(W tym przykładzie przyjęto zostało już udzielono obiektu DTE).

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