Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
    public static int Main(string[] args)
    {
        //if (args.Length != 2)
        //{
        //    Console.WriteLine("Two arguments are needed: IntermediateAssemblyPath and OutputPath");
        //    Console.WriteLine(@"Example: dotnet &quot;..\Signum.MSBuildTask\Binaries\netcoreapp2.1\Signum.MSBuildTask.dll&quot; &quot;@(IntermediateAssembly)&quot; &quot;$(OutputPath)&quot;");
        //    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);
        }
    }