載入 VSPackage
只有在需要 VSPackage 時,VSPackage 才會載入 Visual Studio。 例如,當 Visual Studio 使用 VSPackage 實作的專案處理站或服務時,會載入 VSPackage。 這項功能稱為延遲載入,盡可能用來改善效能。
注意
Visual Studio 可以判斷特定 VSPackage 資訊,例如 VSPackage 所提供的命令,而不需載入 VSPackage。
例如,當解決方案開啟時,VSPackage 可以設定為在特定使用者介面 (UI) 內容中自動載入。 ProvideAutoLoadAttribute 屬性會設定此內容。
在特定內容中自動載入 VSPackage
新增
ProvideAutoLoad
屬性至 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 {. . .}
如需 UI 內容及其 GUID 值的清單,請參閱 UIContextGuids80 的列舉欄位。
在 Initialize 方法中設定斷點。
組建 VSPackage 並開始偵錯。
載入解決方案或建立解決方案。
VSPackage 會載入並在斷點停止。
強制 VSPackage 載入
在某些情況下,VSPackage 可能必須強制另一個 VSPackage 載入。 例如,輕量型 VSPackage 可能會在無法當作 CMDUIContext 使用的內容中載入較大的 VSPackage。
您可以使用 LoadPackage 方法強制 VSPackage 載入。
將此程式碼插入 VSPackage 的 Initialize 方法,這樣會強制另一個 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);
初始化 VSPackage 時,會強制
PackageToBeLoaded
載入。強制載入不應該用於 VSPackage 通訊。 請改用使用 並提供服務。