コード例 #1
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                DisplayHelp();
                return;
            }

            var options = ExtractorOptions.ParseCommandLine(args);
            var layout  = new Layout();
            var logger  = new ConsoleLogger(options.Verbosity);

            var actions = options.
                          AssembliesToExtract.Select(asm => asm.filename).
                          Select <string, Action>(filename => () => ExtractAssembly(layout, filename, logger, options.NoCache, options.PDB, options.TrapCompression)).
                          ToArray();

            foreach (var missingRef in options.MissingReferences)
            {
                logger.Log(Severity.Info, "  Missing assembly " + missingRef);
            }

            var sw = new Stopwatch();

            sw.Start();
            var piOptions = new ParallelOptions
            {
                MaxDegreeOfParallelism = options.Threads
            };

            Parallel.Invoke(piOptions, actions);

            sw.Stop();
            logger.Log(Severity.Info, "Extraction completed in {0}", sw.Elapsed);
        }
コード例 #2
0
        public static ExtractorOptions ParseCommandLine(string[] args)
        {
            var options = new ExtractorOptions();

            options.Verbosity       = Verbosity.Info;
            options.Threads         = System.Environment.ProcessorCount;
            options.PDB             = true;
            options.TrapCompression = TrapWriter.CompressionMode.Gzip;

            foreach (var arg in args)
            {
                if (arg == "--verbose")
                {
                    options.Verbosity = Verbosity.All;
                }
                else if (arg == "--silent")
                {
                    options.Verbosity = Verbosity.Off;
                }
                else if (arg.StartsWith("--verbosity:"))
                {
                    options.Verbosity = (Verbosity)int.Parse(arg.Substring(12));
                }
                else if (arg == "--dotnet")
                {
                    options.AddFrameworkDirectories(true);
                }
                else if (arg == "--nocache")
                {
                    options.NoCache = true;
                }
                else if (arg.StartsWith("--threads:"))
                {
                    options.Threads = int.Parse(arg.Substring(10));
                }
                else if (arg == "--no-pdb")
                {
                    options.PDB = false;
                }
                else
                {
                    options.AddFileOrDirectory(arg);
                }
            }

            options.AddFrameworkDirectories(false);
            options.ResolveReferences();

            return(options);
        }