private static int Main(string[] args)
        {
            Console.CancelKeyPress += (s, e) =>
            {
                e.Cancel = true;
                exitLatch.Set();
            };

            var exitCode = 0;
            try
            {
                var options = new Options();
                options.Parse(args);

                log.Info("Port:{0}", options.Port);
                log.Info("Webroot:{0}", options.WebRoot);

                var configGenerator = new ConfigGenerator(options.WebRoot);
                var settings = configGenerator.Create(
                    options.Port,
                    Constants.FrameworkPaths.FourDotZeroWebConfig,
                    Constants.RuntimeVersion.VersionFourDotZero,
                    Constants.PipelineMode.Integrated,
                    null,
                    null);

                using (var webServer = new WebServer(settings))
                {
                    exitCode = RunWebServer(webServer, log, exitLatch);
                }
            }
            catch (Exception ex)
            {
                log.ErrorException("Error on startup.", ex);
                exitCode = 1;
            }

            return exitCode;
        }