public void SaveSettings()
        {
            try
            {
                SettingsManager       settingsManager = new ShellSettingsManager(this.ServiceProvider);
                WritableSettingsStore settingsStore   = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);

                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_BUILD_START, this.PluginSettings.DisplayOnBuildStart);
                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_SOLUTION_CHANGE, this.PluginSettings.DisplayOnSolutionChange);
                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_STARTUP, this.PluginSettings.DisplayOnStartup);
                settingsStore.SetBoolean(COLLECTION_GROUP, OVERRIDE_VS_OUTPUT_WINDOW, this.PluginSettings.OverrideVSOutputWindow);
                settingsStore.SetBoolean(COLLECTION_GROUP, ENABLE_QUICK_SYNC, this.PluginSettings.EnableQuickSync);

                CustomColumnInfoCompressor compressor = new CustomColumnInfoCompressor();
                string visualContents = compressor.Compress(this.PluginSettings.VisualSettings);
                settingsStore.SetString(COLLECTION_GROUP, VISUAL_SETTINGS, visualContents);
            }
            catch (Exception e)
            {
                // Do nothing
            }
        }
        public void PreLoadSettings(IServiceProvider serviceProvider)
        {
            this.ServiceProvider = serviceProvider;

            SettingsManager       settingsManager = new ShellSettingsManager(serviceProvider);
            WritableSettingsStore settingsStore   = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);

            this.PluginSettings = new ProjectHeroSettings();

            if (!settingsStore.CollectionExists(COLLECTION_GROUP))
            {
                settingsStore.CreateCollection(COLLECTION_GROUP);
            }

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, DISPLAY_ON_BUILD_START))
            {
                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_BUILD_START, true);
            }
            this.PluginSettings.DisplayOnBuildStart = settingsStore.GetBoolean(COLLECTION_GROUP, DISPLAY_ON_BUILD_START, true);

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, DISPLAY_ON_SOLUTION_CHANGE))
            {
                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_SOLUTION_CHANGE, true);
            }
            this.PluginSettings.DisplayOnSolutionChange = settingsStore.GetBoolean(COLLECTION_GROUP, DISPLAY_ON_SOLUTION_CHANGE, true);

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, DISPLAY_ON_STARTUP))
            {
                settingsStore.SetBoolean(COLLECTION_GROUP, DISPLAY_ON_STARTUP, true);
            }
            this.PluginSettings.DisplayOnStartup = settingsStore.GetBoolean(COLLECTION_GROUP, DISPLAY_ON_STARTUP, true);

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, OVERRIDE_VS_OUTPUT_WINDOW))
            {
                settingsStore.SetBoolean(COLLECTION_GROUP, OVERRIDE_VS_OUTPUT_WINDOW, true);
            }
            this.PluginSettings.OverrideVSOutputWindow = settingsStore.GetBoolean(COLLECTION_GROUP, OVERRIDE_VS_OUTPUT_WINDOW, true);

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, ENABLE_QUICK_SYNC))
            {
                settingsStore.SetBoolean(COLLECTION_GROUP, ENABLE_QUICK_SYNC, false);
            }
            this.PluginSettings.EnableQuickSync = settingsStore.GetBoolean(COLLECTION_GROUP, ENABLE_QUICK_SYNC, false);

            if (!settingsStore.PropertyExists(COLLECTION_GROUP, VISUAL_SETTINGS))
            {
                settingsStore.SetString(COLLECTION_GROUP, VISUAL_SETTINGS, NULL);
            }
            else
            {
                string visualSettings = settingsStore.GetString(COLLECTION_GROUP, VISUAL_SETTINGS);
                CustomColumnInfoCompressor decompressor = new CustomColumnInfoCompressor();
                List <ColumnInformation>   columns      = decompressor.Decompress(visualSettings);
                if (columns != null)
                {
                    this.PluginSettings.VisualSettings = new List <ColumnInformation>(columns);
                }
            }

            this.IsSettingsLoaded = true;
        }