private bool VsTelemetryIsOptedIn(GenShell genShell)
        {
            var info = genShell.GetVSTelemetryInfo();

            _client.Context.Properties.Add(TelemetryProperties.VisualStudioEdition, info.VisualStudioEdition);
            _client.Context.Properties.Add(TelemetryProperties.VisualStudioExeVersion, info.VisualStudioExeVersion);
            _client.Context.Properties.Add(TelemetryProperties.VisualStudioCulture, info.VisualStudioCulture);
            _client.Context.Properties.Add(TelemetryProperties.VisualStudioManifestId, info.VisualStudioManifestId);

            return(info.OptedIn);
        }
        public void IntializeTelemetryClient(GenShell genShell)
        {
            if (_client != null)
            {
                return;
            }

            var config = TelemetryConfiguration.CreateDefault();

            try
            {
                config.InstrumentationKey = _currentConfig.RemoteTelemetryKey;

                var vstelemetryInfo = genShell.GetVSTelemetryInfo();
                if (vstelemetryInfo.OptedIn && RemoteKeyAvailable())
                {
                    if (!string.IsNullOrEmpty(_currentConfig.CustomTelemetryEndpoint))
                    {
                        config.TelemetryChannel.EndpointAddress = _currentConfig.CustomTelemetryEndpoint;
                    }

                    IsEnabled = true;
#if DEBUG
                    config.TelemetryChannel.DeveloperMode = true;
#endif
                }
                else
                {
                    IsEnabled = false;
                    config.DisableTelemetry = true;
                }

                _client = new TelemetryClient(config);
                SetSessionData();
                SetVSTelemetryInfo(vstelemetryInfo);

                _client.TrackEvent(TelemetryEvents.SessionStart);
            }
            catch (Exception ex)
            {
                IsEnabled = false;
                config.DisableTelemetry = true;

                Trace.TraceError($"Exception instantiating TelemetryClient:\n\r{ex}");
            }
        }