Gewusst wie: Ruft einen Dienst vom DTE-Objekt ab
Ein Dienst kann von jedem Programm abgerufen werden, das über Visual Studio Zugriff auf das DTEClass-Objekt verfügt. Beispielsweise können Sie den Assistenten aus einem Dienst SVsActivityLog vom DTE-Objekt zugreifen. Sie können diesen Dienst verwenden, um zum Aktivitätsprotokoll zu schreiben. Weitere Informationen finden Sie unter Gewusst wie: Verwenden Sie das Aktivitätsprotokoll.
Das DTE-Objekt implementiert IServiceProvider, die Sie verwenden können, um für einen Dienst aus verwaltetem Code abfragen, indem Sie GetServiceverwenden.
Um einen Dienst vom DTE-Objekt abrufen
Der folgende Code erstellt ServiceProvider vom DTE-Objekt und ruft GetService mit dem Typ des SVsActivityLog Dienstes an. Der Dienst wird auf die Schnittstelle umgewandelt IVsActivityLog, die verwendet wird, um einen Eintrag im Aktivitätsprotokoll zu schreiben. Weitere Informationen abou, wie zum Aktivitätsprotokoll finden Sie unter schreibt Gewusst wie: Verwenden Sie das Aktivitätsprotokoll.
' 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()) );