Tworzenie rozszerzenia za pomocą pakietu VSPackage
W tym przewodniku pokazano, jak utworzyć projekt VSIX i dodać element projektu VSPackage. Użyjemy pakietu VSPackage, aby uzyskać usługę powłoki interfejsu użytkownika w celu wyświetlenia pola komunikatu.
Tworzenie pakietu VSPackage
Utwórz projekt VSIX o nazwie FirstPackage. Szablon projektu VSIX można znaleźć w oknie dialogowym Nowy projekt , wyszukując frazę "vsix".
Po otwarciu projektu dodaj szablon elementu pakietu programu Visual Studio o nazwie FirstPackage. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Dodaj>nowy element. W oknie dialogowym Dodawanie nowego elementu przejdź do pozycji Visual C#>Rozszerzalność i wybierz pozycję Pakiet programu Visual Studio. W polu Nazwa w dolnej części okna zmień nazwę pliku polecenia na FirstPackage.cs.
Skompiluj projekt i rozpocznij debugowanie.
Zostanie wyświetlone eksperymentalne wystąpienie programu Visual Studio. Aby uzyskać więcej informacji na temat wystąpienia eksperymentalnego, zobacz Wystąpienie eksperymentalne.
W wystąpieniu eksperymentalnym otwórz okno Rozszerzenia narzędzi>i Aktualizacje. Tutaj powinno zostać wyświetlone rozszerzenie FirstPackage . (Jeśli otworzysz Rozszerzenia i Aktualizacje w wystąpieniu roboczym programu Visual Studio nie będą widoczne w obszarze FirstPackage.
Ładowanie pakietu VSPackage
W tym momencie rozszerzenie nie jest ładowane, ponieważ nie ma nic, co powoduje jego załadowanie. Zwykle można załadować rozszerzenie podczas interakcji z interfejsem użytkownika (kliknięcie polecenia menu, otwarcie okna narzędzia) lub określenie, że pakiet VSPackage powinien zostać załadowany w określonym kontekście interfejsu użytkownika. Aby uzyskać więcej informacji na temat ładowania pakietów VSPackage i kontekstów interfejsu użytkownika, zobacz Ładowanie pakietów VSPackage. W tej procedurze pokażemy, jak załadować pakiet VSPackage po otwarciu rozwiązania.
Otwórz plik FirstPackage.cs. Poszukaj deklaracji
FirstPackage
klasy . Zastąp istniejące atrybuty następującymi atrybutami:[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideAutoLoad(UIContextGuids80.SolutionExists)] [Guid(FirstPackage.PackageGuidString)] public sealed class FirstPackage : Package
Dodajmy komunikat informujący nas, że pakiet VSPackage został załadowany. W tym celu użyjemy metody vsPackage
Initialize()
, ponieważ usługi programu Visual Studio można pobrać dopiero po lokacji pakietu VSPackage. (Aby uzyskać więcej informacji na temat pobierania usług, zobacz Instrukcje: pobieranie usługi). Zastąp metodęInitialize()
FirstPackage
kodem, który pobiera usługę SVsUIShell , pobiera IVsUIShell interfejs i wywołuje jego ShowMessageBox metodę.protected override void Initialize() { base.Initialize(); IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); Guid clsid = Guid.Empty; int result; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox( 0, ref clsid, "FirstPackage", string.Format(CultureInfo.CurrentCulture, "Inside {0}.Initialize()", this.GetType().FullName), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result)); }
Skompiluj projekt i rozpocznij debugowanie. Zostanie wyświetlone wystąpienie eksperymentalne.
Otwórz rozwiązanie w wystąpieniu eksperymentalnym. Powinno zostać wyświetlone okno komunikatu z komunikatem First Package Inside Initialize().