Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pakiety VSPackage są ładowane do programu Visual Studio tylko wtedy, gdy ich funkcjonalność jest wymagana. Na przykład pakiet VSPackage jest ładowany, gdy program Visual Studio używa wytwórni projektu lub usługi implementowanej przez pakiet VSPackage. Ta funkcja jest nazywana opóźnionym ładowaniem, która jest używana zawsze wtedy, gdy jest to możliwe, aby zwiększyć wydajność.
Uwaga / Notatka
Program Visual Studio może określić pewne informacje o pakietach VSPackage, takie jak polecenia, które oferuje pakiet VSPackage, bez ładowania pakietu VSPackage.
Pakiety VSPackage można ustawić tak, aby automatycznie ładowały się w określonym kontekście interfejsu użytkownika, na przykład po otwarciu rozwiązania. Atrybut ProvideAutoLoadAttribute ustawia ten kontekst.
Automatyczne ładowanie pakietu VSPackage w określonym kontekście
ProvideAutoLoadDodaj atrybut do atrybutów pakietu VSPackage:[DefaultRegistryRoot(@"Software\Microsoft\VisualStudio\14.0")] [PackageRegistration(UseManagedResourcesOnly = true)] [ProvideAutoLoad(UIContextGuids80.SolutionExists)] [Guid("00000000-0000-0000-0000-000000000000")] // your specific package GUID public class MyAutoloadedPackage : Package {. . .}Zobacz wyliczone pola UIContextGuids80 dla listy kontekstów interfejsu użytkownika oraz ich odpowiadających wartości GUID.
Ustaw punkt przerwania w metodzie Initialize .
Skompiluj pakiet VSPackage i rozpocznij debugowanie.
Załaduj rozwiązanie lub utwórz je.
Pakiet VSPackage ładuje się i zatrzymuje w punkcie przerwania.
Wymuszanie załadowania pakietu VSPackage
W niektórych okolicznościach pakiet VSPackage może wymagać wymuszenia załadowania innego pakietu VSPackage. Na przykład, lekki pakiet VSPackage może załadować większy pakiet VSPackage w kontekście, który nie jest dostępny jako CMDUIContext.
Możesz użyć LoadPackage metody , aby wymusić ładowanie pakietu VSPackage.
Wstaw ten kod do Initialize metody pakietu VSPackage, który wymusza załadowanie innego pakietu VSPackage:
IVsShell shell = GetService(typeof(SVsShell)) as IVsShell; if (shell == null) return; IVsPackage package = null; Guid PackageToBeLoadedGuid = new Guid(Microsoft.PackageToBeLoaded.GuidList.guidPackageToBeLoadedPkgString); shell.LoadPackage(ref PackageToBeLoadedGuid, out package);Gdy pakiet VSPackage zostanie zainicjowany, wymusi załadowanie
PackageToBeLoaded.Wymuszanie ładowania nie powinno być używane do komunikacji VSPackage. Zamiast tego użyj funkcji Użyj i zapewnij usługi.