public void PostTelemetryEvent(string telemetryEventName, Dictionary <string, object> telemetryProperties) { if (telemetrySession == null) { if (Process.GetCurrentProcess().ProcessName == "devenv") { telemetrySession = TelemetryService.DefaultSession; } else { if (string.IsNullOrEmpty(SerializedTelemetrySession)) { telemetrySession = TelemetryService.DefaultSession; telemetrySession.IsOptedIn = true; telemetrySession.Start(); SerializedTelemetrySession = telemetrySession.SerializeSettings(); } else { telemetrySession = new TelemetrySession(SerializedTelemetrySession); telemetrySession.Start(); } } } var prefix = telemetryEventName.Replace("/", ".") + "."; TelemetryEvent telemetryEvent = new TelemetryEvent(telemetryEventName); foreach (var property in telemetryProperties) { telemetryEvent.Properties[prefix + property.Key] = property.Value; } telemetrySession.PostEvent(telemetryEvent); }