public App() { string profilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"GitBlame\Profile"); Directory.CreateDirectory(profilePath); ProfileOptimization.SetProfileRoot(profilePath); ProfileOptimization.StartProfile("Startup"); Log.DebugFormat("Starting new application; version {0}.", Assembly.GetExecutingAssembly().GetName().Version); m_analyticsClient = new GoogleAnalyticsClient("UA-25641987-2", "GitBlame", new GoogleAnalyticsStatisticsProvider()); #if !DEVELOPMENT BugSense.Init("w8cfcffb"); #endif AppDomain.CurrentDomain.UnhandledException += (s, ea) => { var exception = ea.ExceptionObject as Exception; if (exception != null) { Log.FatalFormat("Unhandled Exception: {0} {1}", exception, exception.GetType(), exception.Message); #if !DEVELOPMENT m_analyticsClient.SubmitExceptionAsync(exception, true); #endif } else { Log.FatalFormat("Unhandled Error: {0}", ea.ExceptionObject); } }; m_app = new AppModel(); }
private static void IntegrateWithVisualStudio(IObserver <VisualStudioNotification> observer, string commandPath, VisualStudioNotification model, bool integrate) { string preference = string.Join(";", model.Versions.Select(x => GetEffectivePreference(integrate, x))); AppModel.SetRegistrySetting("VisualStudioIntegration", preference); if (integrate) { Log.InfoFormat("Integrating with {0}", string.Join(", ", model.Versions.Select(x => "({0}, {1}, {2})".FormatInvariant(x.Version, x.IntegrationStatus, x.IsChecked)))); // TODO: Delete tools where !x.IsChecked && x.IntegrationStatus == VisualStudioIntegrationStatus.Installed IntegrateWithVisualStudio(commandPath, model.Versions.Where(x => x.IsChecked && x.IntegrationStatus == VisualStudioIntegrationStatus.Available)); } Log.Info("Completing observer"); observer.OnNext(null); observer.OnCompleted(); }