How to: Get a Service from the DTE object (C#)

A service can be obtained from within any program that has access to the Visual Studio Automation DTEClass object. For example, you can access the SVsActivityLog service from within a wizard through the DTE object. You can use this service to write to the activity log. For more information, see How to: Write to the Activity Log (C#).

The DTE object implements IServiceProvider, which you can use to query for a service from managed code using GetService.

Example

The following code creates a ServiceProvider from the DTE object and calls GetService with the type of the SVsActivityLog service. The service is cast to the interface IVsActivityLog, which is used to write an entry in the activity log. For more information on writing to the activity log, see How to: Write to the Activity Log (C#).

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

See Also

Concepts

Services

Service Essentials