Chargement des VSPackagesLoading VSPackages

Les VSPackages sont chargés dans Visual Studio uniquement lorsque leur fonctionnalité est requise.VSPackages are loaded into Visual Studio only when their functionality is required. Par exemple, un VSPackage est chargé lorsque Visual Studio utilise une fabrique de projet ou un service qui le VSPackage implémente.For example, a VSPackage is loaded when Visual Studio uses a project factory or a service that the VSPackage implements. Cette fonctionnalité est appelée chargement différé, qui est utilisé chaque fois que possible améliorer les performances.This feature is called delayed loading, which is used whenever possible to improve performance.

Note

Visual Studio peut déterminer certaines informations sur le package, telles que les commandes par un VSPackage, sans charger le VSPackage.Visual Studio can determine certain VSPackage information, such as the commands that a VSPackage offers, without loading the VSPackage.

VSPackages peut être définis à autoload dans un contexte d’interface utilisateur utilisateur particulier, par exemple, lorsqu’une solution est ouverte.VSPackages can be set to autoload in a particular user interface (UI) context, for example, when a solution is open. Le ProvideAutoLoadAttribute attribut définit ce contexte.The ProvideAutoLoadAttribute attribute sets this context.

Chargement automatique un VSPackage dans un contexte spécifiqueAutoloading a VSPackage in a specific context

  • Ajouter le ProvideAutoLoad aux attributs VSPackage d’attribut :Add the ProvideAutoLoad attribute to the VSPackage attributes:

    [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  
    {. . .}  
    

    Afficher les champs énumérées de UIContextGuids80 pour obtenir la liste des contextes d’interface utilisateur et leurs valeurs GUID.See the enumerated fields of UIContextGuids80 for a list of the UI contexts and their GUID values.

  • Définir un point d’arrêt dans le Initialize (méthode).Set a breakpoint in the Initialize method.

  • Générer le VSPackage et démarrer le débogage.Build the VSPackage and start debugging.

  • Charger une solution ou créez-en un.Load a solution or create one.

    Le package Visual Studio charge et s’arrête au point d’arrêt.The VSPackage loads and stops at the breakpoint.

Forcer un VSPackage à chargerForcing a VSPackage to load

Dans certaines circonstances un VSPackage peut être amené à forcer un autre VSPackage doit être chargé.Under some circumstances a VSPackage may have to force another VSPackage to be loaded. Par exemple, un VSPackage léger peut charger un VSPackage plus volumineux dans un contexte qui n’est pas disponible en tant qu’un CMDUIContext.For example, a lightweight VSPackage might load a larger VSPackage in a context that is not available as a CMDUIContext.

Vous pouvez utiliser la LoadPackage méthode pour forcer un VSPackage à charger.You can use the LoadPackage method to force a VSPackage to load.

  • Insérez ce code dans la Initialize méthode du VSPackage qui force une autre VSPackage à charger :Insert this code into the Initialize method of the VSPackage that forces another VSPackage to load:

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

    Lorsque le VSPackage est initialisé, il force PackageToBeLoaded à charger.When the VSPackage is initialized, it will force PackageToBeLoaded to load.

    Lors du chargement de force ne doit pas être utilisé pour la communication du VSPackage.Force loading should not be used for VSPackage communication. Utilisez à l’aide et fourniture de Services à la place.Use Using and Providing Services instead.

Voir aussiSee Also

VSPackagesVSPackages