public static void SaveSetting(SettingModel obj) { string xmlString; XmlSerializer xmlSerializer = new XmlSerializer(typeof(SettingModel)); using (MemoryStream ms = new MemoryStream()) { xmlSerializer.Serialize(ms, obj); xmlString = Encoding.UTF8.GetString(ms.ToArray()); } StreamWriter sw = new StreamWriter(configDirectory + "\\" + configName, false); sw.Write(xmlString); sw.Close(); //重置所有的配置(null时会重新从配置文件中读取) BaseUCSetting.SettingModel = null; if (ThemeSetting.ThemeChanged) { if (MessageBox.Show("Program has deteched that you have changed your theme, which need restart visual studio to make it work, do you want restart visual studio now?", "Restart Visual Studio", MessageBoxButtons.OKCancel) == DialogResult.OK) { VSBase.ReStartVS(); } } }
protected override void OnExecute(Microsoft.VisualStudio.Shell.OleMenuCommand command) { VSBase.ReStartVS(); }
protected override void OnExecute(Microsoft.VisualStudio.Shell.OleMenuCommand command) { if (VSTextView.ActiveTextView == null) { return; } long getElement = 0; long regionTime = 0; Stopwatch sw = new Stopwatch(); sw.Start(); //开始之前先格式化 VSBase.ExecuteCommand((uint)VSConstants.VSStd2KCmdID.FORMATDOCUMENT); VSStatusBar.SetText("quick region......"); using (VSUndo.StartUndo()) { SettingModel model = SettingFrm.ReadSetting(); if (model != null) { QuickRegionSettingModel quickRegionModel = model.QuickRegionModel; VSCodeModel codeModel = new VSCodeModel(); List <CodeElement> classLists = GetClassAndStructInFile(codeModel); for (int i = 0; i < classLists.Count; i++) { sw.Stop(); getElement = sw.ElapsedMilliseconds; sw.Restart(); List <CodeElement> noneEventElements = codeModel.GetNotRegionNoneEventMethodInClass(classLists[i]); if (noneEventElements.Count != 0) { RegionElement(noneEventElements, i, model.QuickRegionModel.Method); } List <CodeElement> eventElements = codeModel.GetNotRegionEventInClass(classLists[i]); if (eventElements.Count != 0) { RegionElement(eventElements, i, model.QuickRegionModel.Event); } List <CodeElement> constructorElements = codeModel.GetNotRegionConstructorInClass(classLists[i]); if (constructorElements.Count != 0) { RegionElement(constructorElements, i, model.QuickRegionModel.Constructor); } List <CodeElement> propertyElements = codeModel.GetNotRegionPropertyInClass(classLists[i]); if (propertyElements.Count != 0) { RegionElement(propertyElements, i, model.QuickRegionModel.Property); } List <CodeElement> variablesElements = codeModel.GetNotRegionVariablesInClass(classLists[i]); if (variablesElements.Count != 0) { RegionElement(variablesElements, i, model.QuickRegionModel.Variable); } sw.Stop(); regionTime = sw.ElapsedMilliseconds; } //QuickRegionpNonEventMethod(textView, quickRegionModel.Method); //QuickRegionpEventMethod(textView, quickRegionModel.Event); //QuickRegionConstructor(textView, quickRegionModel.Constructor); //QuickRegionpProperty(textView, quickRegionModel.Property); //QuickRegionDelegates(textView, "- Delegate -"); //QuickRegionVariables(textView, quickRegionModel.Variable); //CleanEmptyRegion(textView); CleanBlankLine(codeModel); VSDocument.SaveActiveDocument(); VSBase.ExecuteCommand((uint)VSConstants.VSStd2KCmdID.FORMATDOCUMENT); VSBase.ExecuteCommand((uint)VSConstants.VSStd2KCmdID.OUTLN_COLLAPSE_TO_DEF); } } VsOutput.ShowDebugMessage("region complete, get element time total: " + getElement + " milliseconds\r\n" + " region time: " + regionTime); }