public static ProcessRunner Run(string exePath, string arguments = "")
        {
            var processRunner = new ProcessRunner(exePath, arguments);
            processRunner.Start();

            return processRunner;
        }
        public static ProcessRunner Run(string exePath, string arguments = "", IDictionary<string, string> environmentVariables = null)
        {
            var processRunner = new ProcessRunner(exePath, arguments, environmentVariables);
            processRunner.Start();

            return processRunner;
        }
        public IISExpressProcess(WebApplication webApplication)
        {
            const string iisExpressX86Path = @"c:\program files (x86)\IIS Express\IISExpress.exe";
            const string iisExpressX64Path = @"c:\program files\IIS Express\IISExpress.exe";
            var processFileName = File.Exists(iisExpressX86Path) ? iisExpressX86Path : iisExpressX64Path;

            var arguments = string.Format(@"/systray:false /trace:true /path:{0} /port:{1}", webApplication.FullPath, webApplication.PortNumber.ToString(CultureInfo.InvariantCulture));

            process = ProcessRunner.Run(processFileName, arguments);
        }
        public IISExpressProcess(Configuration configuration)
        {
            if (string.IsNullOrWhiteSpace(configuration.IISExpressPath))
            {
                configuration.IISExpressPath = GetDefaultIISExpressPath();
            }
            if (!File.Exists(configuration.IISExpressPath))
            {
                throw new IISExpressNotFoundException();
            }

            process = ProcessRunner.Run(configuration.IISExpressPath, configuration.ProcessParameters.ToString(), configuration.EnvironmentVariables);
        }