Sdílet prostřednictvím


Načtení balíčků VSPackage

Balíčky VSPackage se načtou do sady Visual Studio jenom v případě, že je potřeba jejich funkce. Balíček VSPackage se například načte, když Visual Studio používá projektovou továrnu nebo službu, kterou sada VSPackage implementuje. Tato funkce se nazývá zpožděné načítání, které se používá, kdykoli je to možné ke zlepšení výkonu.

Poznámka:

Visual Studio může určit určité informace balíčku VSPackage, například příkazy, které balíček VSPackage nabízí, aniž by se načetl balíček VSPackage.

Balíčky VSPackage lze nastavit tak, aby se automaticky načítá v konkrétním kontextu uživatelského rozhraní, například při otevření řešení. Atribut ProvideAutoLoadAttribute nastaví tento kontext.

Automatické načtení balíčku VSPackage v konkrétním kontextu

  • ProvideAutoLoad Přidejte atribut do atributů 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
    {. . .}
    

    Prohlédněte si výčtová pole UIContextGuids80 seznamu kontextů uživatelského rozhraní a jejich hodnot GUID.

  • Nastavte zarážku v Initialize metodě.

  • Sestavte balíček VSPackage a spusťte ladění.

  • Načtěte řešení nebo vytvořte řešení.

    Balíček VSPackage se načte a zastaví na zarážce.

Vynucení načtení balíčku VSPackage

Za určitých okolností může být nutné vynutit načtení jiného balíčku VSPackage. Například jednoduchý balíček VSPackage může načíst větší balíček VSPackage v kontextu, který není k dispozici jako CMDUIContext.

Tuto metodu LoadPackage můžete použít k vynucení načtení balíčku VSPackage.

  • Vložte tento kód do Initialize metody VSPackage, která vynutí načtení dalšího balíčku 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);
    
    

    Při inicializaci balíčku VSPackage se vynutí PackageToBeLoaded načtení.

    Vynucené načítání by se nemělo používat pro komunikaci balíčku VSPackage. Místo toho použijte použití a poskytování služeb .