private bool CompileCode(string workingPath) { using (Log.DebugTraceMethodCall("CompileCode", "Compile Code on STA thread to " + workingPath)) { var zetboxApiPath = GetApiPath(); Log.DebugFormat("zetboxApiPath = [{0}]", zetboxApiPath); // TODO: move MsBuild logging to log4net if (File.Exists("TemplateCodegenLog.txt")) { File.Delete("TemplateCodegenLog.txt"); } string binPath = GetBinaryBasePath(workingPath); Log.DebugFormat("binPath = [{0}]", binPath); Directory.CreateDirectory(binPath); var engine = new Engine(ToolsetDefinitionLocations.Registry); engine.RegisterLogger(new Log4NetLogger()); RegisterConsoleLogger(engine, workingPath); engine.GlobalProperties.SetProperty("Configuration", GetConfiguration()); engine.GlobalProperties.SetProperty("OutputPathOverride", binPath); engine.GlobalProperties.SetProperty("ZetboxAPIPathOverride", zetboxApiPath); Log.Info("Dumping engine Properties"); foreach (BuildProperty prop in engine.GlobalProperties) { Log.InfoFormat("{0} = {1}", prop.Name, prop.Value); } try { var result = true; var compileOrder = _generatorProviders .GroupBy(k => k.CompileOrder) .OrderBy(i => i.Key); foreach (var gens in compileOrder) { foreach (var gen in gens) { result &= CompileSingle(engine, gen, workingPath, null); } } // Additional Targets var additionalTargets = _generatorProviders .Where(i => i.AdditionalTargets.Count() > 0) .GroupBy(k => k.CompileOrder) .OrderBy(i => i.Key); foreach (var gens in additionalTargets) { foreach (var gen in gens) { foreach (var target in gen.AdditionalTargets) { result &= CompileSingle(engine, gen, workingPath, target); } } } return(result); } finally { // close all logfiles engine.UnregisterAllLoggers(); } } }
public static int Main(string[] arguments) { Logging.Configure(); Log.InfoFormat("Starting Zetbox Server with args [{0}]", String.Join(" ", arguments)); try { var config = ExtractConfig(ref arguments); AssemblyLoader.Bootstrap(AppDomain.CurrentDomain, config); using (var container = CreateMasterContainer(config)) { OptionSet options = new OptionSet(); // activate all registered options container.Resolve <IEnumerable <Option> >().OrderBy(o => o.Prototype).ForEach(o => options.Add(o)); List <string> extraArguments = null; try { extraArguments = options.Parse(arguments); } catch (OptionException e) { Log.Fatal("Error in commandline", e); return(1); } if (extraArguments != null && extraArguments.Count > 0) { Log.FatalFormat("Unrecognized arguments on commandline: {0}", string.Join(", ", extraArguments.ToArray())); return(1); } var actions = config.AdditionalCommandlineActions; // process command line if (actions.Count > 0) { using (Log.DebugTraceMethodCall("CmdLineActions", "processing commandline actions")) { foreach (var action in actions) { using (var innerContainer = container.BeginLifetimeScope()) { action(innerContainer); } } } Log.Info("Shutting down"); } else { IServiceControlManager scm = null; if (container.TryResolve <IServiceControlManager>(out scm)) { Log.Info("Starting zetbox Services"); scm.Start(); Log.Info("Waiting for console input to shutdown"); Console.WriteLine("Services started, press the anykey to exit"); Console.ReadKey(); Log.Info("Shutting down"); } else { Log.Error("No IServiceControlManager registered"); } if (scm != null) { scm.Stop(); } } } Log.Info("Exiting"); return(0); } catch (Exception ex) { Log.Error("Server Application failed:", ex); return(1); } }