共用方式為


How to: 從 DTE 物件中取得服務

您可以從具有存取權的任何程式取得服務Visual Studio自動化DTEClass物件。 例如,您可以存取SVsActivityLog服務從透過 DTE 物件精靈。 您可以使用這項服務寫入活動的記錄檔。 如需詳細資訊,請參閱 How to: 使用 [活動記錄

DTE 物件實作IServiceProvider,您可以用來查詢服務從 managed 程式碼,藉由使用GetService

若要從 DTE 物件中取得服務

  • 下列程式碼會建立ServiceProvider從 DTE 物件和呼叫GetService的型別SVsActivityLog服務。 服務轉換成介面IVsActivityLog,這用來寫入活動的記錄檔中的項目。 如需詳細資訊關於如何寫入活動的記錄檔,請參閱How to: 使用 [活動記錄

    ' Start with the DTE object, for example:  
    'DTE dte = (DTE)GetService(typeof(DTE));  
    Dim dte As DTE
    dte = CType(GetService(GetType(DTE)), DTE)
    
    Dim sp As New ServiceProvider(dte)
    Dim log As IVsActivityLog = TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
    If log Is Nothing Then 
        Return 
    End If 
    
    Dim hr As Integer = log.LogEntry(CType(__ACTIVITYLOG_ENTRYTYPE.ALE_INFORMATION, UInt32), Me.ToString(), String.Format(CultureInfo.CurrentCulture, "Consuming SVsActivityLog service in {0}", Me.ToString()))
    
    // Start with the DTE object, for example: 
    // DTE dte = (DTE)GetService(typeof(DTE));
    
    ServiceProvider sp = new ServiceProvider(dte);
    IVsActivityLog log =
       GetService(typeof(SVsActivityLog)) as IVsActivityLog;
    if (log == null) return;
    
    int hr = log.LogEntry(
       (UInt32)__ACTIVITYLOG_ENTRYTYPE.ALE_INFORMATION,
       this.ToString(),
       string.Format(CultureInfo.CurrentCulture,
       "Consuming SVsActivityLog service in {0}", this.ToString())
    );
    

請參閱

概念

服務的基本資訊

其他資源

服務