static void Main(string[] args) { //var inputFiles = new string[0]; //var inputDirectories = new[] { @"C:\Users\y.kawai\Documents\Grani\IvoryLfs\Ivory\Ivory.Shared" }; //var c = new TypeCollector(inputFiles, inputDirectories, new string[0], true); var cmdArgs = new CommandlineArguments(args); if (!cmdArgs.IsParsed) { return; } // Generator Start... var sw = Stopwatch.StartNew(); Console.WriteLine("Project Compilation Start:" + string.Join(",", cmdArgs.InputFiles) + " " + string.Join(",", cmdArgs.InputDirectories)); var collector = new TypeCollector(cmdArgs.InputFiles, cmdArgs.InputDirectories, cmdArgs.ConditionalSymbols, cmdArgs.AdditionalCompilationDirectories, !cmdArgs.AllowInternal); Console.WriteLine("Project Compilation Complete:" + sw.Elapsed.ToString()); Console.WriteLine(); sw.Restart(); Console.WriteLine("Method Collect Start"); var(objectInfo, genericInfo) = collector.Collect(); Console.WriteLine("Method Collect Complete:" + sw.Elapsed.ToString()); Console.WriteLine("Output Generation Start"); sw.Restart(); var objectFormatterTemplates = objectInfo .GroupBy(x => x.Namespace) .Select(x => new FormatterTemplate() { Namespace = cmdArgs.GetNamespaceDot() + "Formatters" + ((x.Key == null) ? "" : "." + x.Key), objectSerializationInfos = x.ToArray(), }) .ToArray(); var resolverTemplate = new ResolverTemplate() { Namespace = cmdArgs.GetNamespaceDot() + "Resolvers", FormatterNamespace = cmdArgs.GetNamespaceDot() + "Formatters", ResolverName = cmdArgs.ResolverName, registerInfos = genericInfo.Cast <IResolverRegisterInfo>().Concat(objectInfo).ToArray() }; var sb = new StringBuilder(); sb.AppendLine(resolverTemplate.TransformText()); sb.AppendLine(); foreach (var item in objectFormatterTemplates) { var text = item.TransformText(); sb.AppendLine(text); } Output(cmdArgs.OutputPath, sb.ToString()); Console.WriteLine("String Generation Complete:" + sw.Elapsed.ToString()); }