/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); try { var txtxMgr = (IVsTextManager)GetService <SVsTextManager>(); IVsUIShell uiShell = (IVsUIShell)GetService <SVsUIShell>(); IntPtr mainWnd; uiShell.GetDialogOwnerHwnd(out mainWnd); var dialog = new Window1(); var helper = new WindowInteropHelper(dialog) { Owner = mainWnd }; dialog.ShowDialog(); if (dialog.SelectedOperation == Window1.Operation.AutoFull) { var plugin = new AutoPropertyConverter(txtxMgr); plugin.Execute(); } else if (dialog.SelectedOperation == Window1.Operation.Encapsulate) { var plugin = new FieldConverter(txtxMgr); plugin.Execute(); } } catch (Exception ex) { VsShellUtilities.ShowMessageBox( this.package, ex.Message, "PropMan", OLEMSGICON.OLEMSGICON_INFO, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); } }
public static int Main(string[] args) { //if (args.Length != 2) //{ // Console.WriteLine("Two arguments are needed: IntermediateAssemblyPath and OutputPath"); // Console.WriteLine(@"Example: dotnet "..\Signum.MSBuildTask\Binaries\netcoreapp2.1\Signum.MSBuildTask.dll" "@(IntermediateAssembly)" "$(OutputPath)""); // return -1; //} string intermediateAssembly = args[0]; string referencesFile = args[1]; string[] references = File.ReadAllLines(referencesFile); var log = Console.Out; if (!File.Exists(intermediateAssembly)) { log.WriteLine("Signum.MSBuildTask skipped (File not found): {0}", intermediateAssembly); return(0); } log.WriteLine("Signum.MSBuildTask starting: {0}", intermediateAssembly); try { var resolver = new PreloadingAssemblyResolver(references); bool hasPdb = File.Exists(Path.ChangeExtension(intermediateAssembly, ".pdb")); AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(intermediateAssembly, new ReaderParameters { AssemblyResolver = resolver, ReadingMode = ReadingMode.Deferred, ReadSymbols = hasPdb, InMemory = true, SymbolReaderProvider = hasPdb ? new PdbReaderProvider() : null }); if (AlreadyProcessed(assembly)) { log.WriteLine("Signum.MSBuildTask already processed: {0}", intermediateAssembly); return(0); } bool errors = false; errors |= new ExpressionFieldGenerator(assembly, resolver, log).FixAutoExpressionField(); errors |= new FieldAutoInitializer(assembly, resolver, log).FixAutoInitializer(); errors |= new AutoPropertyConverter(assembly, resolver).FixProperties(); if (errors) { return(-1); } MarkAsProcessed(assembly, resolver); assembly.Write(intermediateAssembly, new WriterParameters { WriteSymbols = hasPdb, SymbolWriterProvider = hasPdb ? new PdbWriterProvider() : null }); log.WriteLine("Signum.MSBuildTask finished: {0}", intermediateAssembly); return(0); } catch (Exception e) { log.Write("Exception in Signum.MSBuildTask: {0}", e.Message); log.WriteLine(e.StackTrace); log.WriteLine(args[1]); return(-1); } }