Procedura: Ottenere un servizio dall'oggetto DTE
Un servizio può essere ottenuto da qualsiasi programma che ha accesso all' oggetto di DTEClass di automazione di Visual Studio . Ad esempio, è possibile accedere al servizio di SVsActivityLog da una procedura guidata tramite l'oggetto DTE. È possibile utilizzare questo servizio per scrivere nel log attività. Per ulteriori informazioni, vedere Procedura: utilizzare il registro attività.
L'oggetto DTE implementa IServiceProvider, che è possibile utilizzare per eseguire una query per un servizio dal codice gestito utilizzando GetService.
Per ottenere un servizio dall' oggetto DTE
Il codice seguente crea ServiceProvider dall' oggetto DTE e chiama GetService con il tipo del servizio di SVsActivityLog . Il servizio viene eseguito il cast dell' interfaccia IVsActivityLog, utilizzata per scrivere una voce del registro attività. Per ulteriori abou di informazioni come scrivere nel log attività, vedere Procedura: utilizzare il registro attività.
' 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()) );