Carregar VSPackages
VSPackages são carregados no Visual Studio somente quando sua funcionalidade é necessária. Por exemplo, um VSPackage é carregado quando o Visual Studio usa uma fábrica de projeto ou um serviço que o VSPackage implementa. Esse recurso é chamado de carregamento atrasado, que é usado sempre que possível para melhorar o desempenho.
Observação
Visual Studio pode determinar determinadas informações VSPackage, como os comandos que um VSPackage oferece, sem carregar o VSPackage.
Os VSPackages podem ser definidos para carregamento automático em um contexto específico de interface do usuário (UI), por exemplo, quando uma solução está aberta. O ProvideAutoLoadAttribute atributo define esse contexto.
Carregar automaticamente um VSPackage em um contexto específico
Adicione o
ProvideAutoLoad
atributo aos atributos 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 {. . .}
Consulte os campos enumerados de UIContextGuids80 para obter uma lista dos contextos da interface do usuário e seus valores GUID.
Defina um ponto de interrupção no Initialize método.
Crie o VSPackage e inicie a depuração.
Carregue uma solução ou crie uma.
O VSPackage carrega e pára no ponto de interrupção.
Forçar um VSPackage a carregar
Em algumas circunstâncias, um VSPackage pode ter que forçar outro VSPackage a ser carregado. Por exemplo, um VSPackage leve pode carregar um VSPackage maior em um contexto que não está disponível como um CMDUIContext.
Você pode usar o LoadPackage método para forçar um VSPackage a carregar.
Insira esse código no Initialize método do VSPackage que força outro VSPackage a carregar:
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);
Quando o VSPackage é inicializado, ele forçará
PackageToBeLoaded
a carregar.O carregamento forçado não deve ser usado para comunicação VSPackage. Em vez disso, use e forneça serviços .