VSPackage 로드
VSPackage는 기능이 필요한 경우에만 Visual Studio에 로드됩니다. 예를 들어 Visual Studio에서 VSPackage가 구현하는 프로젝트 팩터리 또는 서비스를 사용할 때 VSPackage가 로드됩니다. 이 기능을 지연 로드하고 하며 성능을 향상시키기 위해 가능할 때마다 사용됩니다.
참고 항목
Visual Studio는 VSPackage를 로드하지 않고도 VSPackage가 제공하는 명령과 같은 특정 VSPackage 정보를 결정할 수 있습니다.
VSPackages는 솔루션이 열려 있는 경우와 같이 특정 UI(사용자 인터페이스) 컨텍스트에서 자동 로드되도록 설정할 수 있습니다. ProvideAutoLoadAttribute 특성은 이 컨텍스트를 설정합니다.
특정 컨텍스트에서 VSPackage 자동 로드
VSPackage 속성에
ProvideAutoLoad
속성을 추가합니다.[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 {. . .}
UI 컨텍스트 및 해당 GUID 값의 목록은 UIContextGuids80의 열거형 필드를 참조하세요.
Initialize 메서드에서 중단점을 설정합니다.
VSPackage를 빌드하고 디버깅을 시작합니다.
솔루션을 로드하거나 새로 만듭니다.
VSPackage는 중단점에서 로드 및 중지됩니다.
VSPackage 강제 로드
경우에 따라 VSPackage는 다른 VSPackage를 강제로 로드해야 할 수 있습니다. 예를 들어 경량 VSPackage는 CMDUIContext로 사용할 수 없는 컨텍스트에서 더 큰 VSPackage를 로드할 수 있습니다.
LoadPackage 메서드를 사용하여 VSPackage를 강제로 로드할 수 있습니다.
다른 VSPackage를 강제로 로드하는 VSPackage의 Initialize 메서드에 이 코드를 삽입합니다.
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);
VSPackage가 초기화되면
PackageToBeLoaded
가 강제로 로드됩니다.VSPackage 통신에 강제 로드를 사용하면 안 됩니다. 대신 서비스를 사용하고 제공합니다.