static int Main(string[] raw) { String temp; bool wait = ArgumentList.Remove(ref raw, "wait", out temp); bool addMissing = ArgumentList.Remove(ref raw, "add-missing", out temp); try { var entryAssembly = Assembly.GetEntryAssembly(); if (entryAssembly != null && !ArgumentList.Remove(ref raw, "nologo", out temp)) { var aname = entryAssembly.GetName(); aname.CultureInfo = null; Console.WriteLine("{0}", aname); foreach ( AssemblyCopyrightAttribute a in entryAssembly.GetCustomAttributes(typeof (AssemblyCopyrightAttribute), false)) Console.WriteLine("{0}", a.Copyright); Console.WriteLine(); } if (ArgumentList.Remove(ref raw, "verbose", out temp) || ArgumentList.Remove(ref raw, "verbosity", out temp)) { SourceLevels traceLevel; try { traceLevel = (SourceLevels) Enum.Parse(typeof (SourceLevels), temp); } catch { traceLevel = SourceLevels.All; } Trace.Listeners.Add(new ConsoleTraceListener() { Filter = new EventTypeFilter(traceLevel), IndentLevel = 0, TraceOutputOptions = TraceOptions.None }); } var argsList = new List<string>(); foreach (string arg in raw) { if (arg.StartsWith("@")) { foreach (var line in File.ReadAllLines(arg.Substring(1))) { if (!String.IsNullOrEmpty(line) && line.Trim().Length > 0) argsList.Add(line.Trim()); } } else { argsList.Add(arg); } } raw = argsList.ToArray(); if (ArgumentList.Remove(ref raw, "?", out temp) || ArgumentList.Remove(ref raw, "help", out temp)) return DoHelp(); var args = new ArgumentList(StringComparer.Ordinal, raw); if (args.Unnamed.Count == 0 || args.Count == 0) return DoHelp(); var files = new FileList(); files.ProhibitedAttributes = FileAttributes.Hidden | FileAttributes.System; files.RecurseFolders = true; files.FileFound += delegate(object sender, FileList.FileFoundEventArgs eventArgs) { eventArgs.Ignore = !eventArgs.File.Name.StartsWith("AssemblyInfo"); }; foreach (var arg in args.Unnamed) files.Add(arg); var processor = new AssemblyFileProcessor(args, addMissing); foreach (FileInfo file in files.ToArray()) { processor.ProcessFile(file); } } catch (ApplicationException ae) { Trace.TraceError("{0}", ae); Console.Error.WriteLine(); Console.Error.WriteLine(ae.Message); Environment.ExitCode = -1; } catch (Exception e) { Trace.TraceError("{0}", e); Console.Error.WriteLine(); Console.Error.WriteLine(e.ToString()); Environment.ExitCode = -1; } finally { if (wait) { Console.WriteLine(); Console.WriteLine("Press [Enter] to continue..."); Console.ReadLine(); } } return Environment.ExitCode; }
static int Main(string[] raw) { String temp; bool wait = ArgumentList.Remove(ref raw, "wait", out temp); bool addMissing = ArgumentList.Remove(ref raw, "add-missing", out temp); try { var entryAssembly = Assembly.GetEntryAssembly(); if (entryAssembly != null && !ArgumentList.Remove(ref raw, "nologo", out temp)) { var aname = entryAssembly.GetName(); aname.CultureInfo = null; Console.WriteLine("{0}", aname); foreach ( AssemblyCopyrightAttribute a in entryAssembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)) { Console.WriteLine("{0}", a.Copyright); } Console.WriteLine(); } if (ArgumentList.Remove(ref raw, "verbose", out temp) || ArgumentList.Remove(ref raw, "verbosity", out temp)) { SourceLevels traceLevel; try { traceLevel = (SourceLevels)Enum.Parse(typeof(SourceLevels), temp); } catch { traceLevel = SourceLevels.All; } Trace.Listeners.Add(new ConsoleTraceListener() { Filter = new EventTypeFilter(traceLevel), IndentLevel = 0, TraceOutputOptions = TraceOptions.None }); } var argsList = new List <string>(); foreach (string arg in raw) { if (arg.StartsWith("@")) { foreach (var line in File.ReadAllLines(arg.Substring(1))) { if (!String.IsNullOrEmpty(line) && line.Trim().Length > 0) { argsList.Add(line.Trim()); } } } else { argsList.Add(arg); } } raw = argsList.ToArray(); if (ArgumentList.Remove(ref raw, "?", out temp) || ArgumentList.Remove(ref raw, "help", out temp)) { return(DoHelp()); } var args = new ArgumentList(StringComparer.Ordinal, raw); if (args.Unnamed.Count == 0 || args.Count == 0) { return(DoHelp()); } var files = new FileList(); files.ProhibitedAttributes = FileAttributes.Hidden | FileAttributes.System; files.RecurseFolders = true; files.FileFound += delegate(object sender, FileList.FileFoundEventArgs eventArgs) { eventArgs.Ignore = !eventArgs.File.Name.StartsWith("AssemblyInfo"); }; foreach (var arg in args.Unnamed) { files.Add(arg); } var processor = new AssemblyFileProcessor(args, addMissing); foreach (FileInfo file in files.ToArray()) { processor.ProcessFile(file); } } catch (ApplicationException ae) { Trace.TraceError("{0}", ae); Console.Error.WriteLine(); Console.Error.WriteLine(ae.Message); Environment.ExitCode = -1; } catch (Exception e) { Trace.TraceError("{0}", e); Console.Error.WriteLine(); Console.Error.WriteLine(e.ToString()); Environment.ExitCode = -1; } finally { if (wait) { Console.WriteLine(); Console.WriteLine("Press [Enter] to continue..."); Console.ReadLine(); } } return(Environment.ExitCode); }