如何:使用 GetGlobalService
有時候您可能需要從 [工具] 視窗中取得服務,或控制未設置,否則就不知道您所要之的服務的服務提供者已決定位置的容器。 例如,您可以寫入活動記錄檔從控制項中。 如需有關這些及其他案例的詳細資訊,請參閱How to: 服務進行疑難排解。
您可以充分Visual Studio服務,藉由呼叫靜態GetGlobalService方法。
GetGlobalService初始化任何 VSPackage 衍生自第一次快取的服務提供者會依賴Package已決定位置。 您必須保證此條件符合時,否則為空的服務準備。
幸運的是, GetGlobalService大多數情況下正常運作。
如果 VSPackage 提供服務,只有知道另一台 VSPackage,VSPackage 要求的服務已決定位置之前載入服務所提供的 VSPackage。
工具視窗由 VSPackage,如果 [工具] 視窗建立之前,已決定位置 VSPackage。
如果建立 VSPackage 的工具視窗裝載控制項的容器,在建立控制項容器之前,已決定位置 VSPackage。
若要取得的工具視窗或控制項的容器內的服務
在這段程式碼中插入的建構函式、 工具視窗或控制項容器:
IVsActivityLog log = Package.GetGlobalService(typeof(SVsActivityLog)) as IVsActivityLog; if (log == null) return;
Dim log As IVsActivityLog = TryCast(Package.GetGlobalService(GetType(SVsActivityLog)), IVsActivityLog) If log Is Nothing Then Return End If
這段程式碼會取得 SVsActivityLog 服務並將其以轉換IVsActivityLog介面,可以用來寫入活動的記錄檔。 如需範例,請參閱 如何︰ 使用活動記錄檔。