共用方式為


如何:使用 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介面,可以用來寫入活動的記錄檔。  如需範例,請參閱 如何︰ 使用活動記錄檔。  

請參閱

How to: 服務進行疑難排解
使用並提供服務
服務的基本資訊