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()) );