Exemplo n.º 1
0
        private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder)
        {
            var process = new Process
            {
                StartInfo =
                {
                    FileName               = m_executablePath,
                    Arguments              = settings.Arguments,
                    UseShellExecute        = false,
                    RedirectStandardInput  = true,
                    RedirectStandardOutput = true,
                    StandardOutputEncoding = Encoding.UTF8,
                    RedirectStandardError  = true,
                    WorkingDirectory       = m_defaultWorkingDirectory,
                    CreateNoWindow         = true,
                },
            };

            process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data);

            // start process
            process.Start();

            // read asynchronously from the error stream
            process.BeginErrorReadLine();
            return(process);
        }
Exemplo n.º 2
0
        public ExternalProcessResults Run(ProcessRunSettings settings)
        {
            StringBuilder errors = new StringBuilder();
            using (var process = StartProcess(settings, errors))
            {
                // wait for process to end (must read all output first)
                var output = process.StandardOutput.ReadToEnd();
                process.WaitForExit();

                // return errors and process output
                return new ExternalProcessResults(output, errors.ToString(), process.ExitCode);
            }
        }
Exemplo n.º 3
0
        public ExternalProcessResults Run(ProcessRunSettings settings)
        {
            StringBuilder errors = new StringBuilder();

            using var process = StartProcess(settings, errors);

            // wait for process to end (must read all output first)
            var output = process.StandardOutput.ReadToEnd();

            process.WaitForExit();

            // return errors and process output
            return(new ExternalProcessResults(output, errors.ToString(), process.ExitCode));
        }
Exemplo n.º 4
0
        private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder)
        {
            var process = new Process
            {
                StartInfo =
                {
                    FileName = m_executablePath,
                    Arguments = settings.Arguments,
                    UseShellExecute = false,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    StandardOutputEncoding = Encoding.UTF8,
                    RedirectStandardError = true,
                    WorkingDirectory = m_defaultWorkingDirectory,
                    CreateNoWindow = true,
                },
            };

            process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data);

            // start process
            process.Start();

            // read asynchronously from the error stream
            process.BeginErrorReadLine();
            return process;
        }
Exemplo n.º 5
0
        public ExternalProcessResults Run(ProcessRunSettings settings)
        {
            StringBuilder errors = new StringBuilder();
            using (Process process = StartProcess(settings, errors))
            {
                // wait for process to end (must read all output first)
                string output = null;
                if (settings.StandardOutputStream == null)
                    output = process.StandardOutput.ReadToEnd();
                else
                    process.StandardOutput.BaseStream.CopyTo(settings.StandardOutputStream);

                process.WaitForExit();

                // return errors and process output
                return new ExternalProcessResults(output, errors.ToString(), process.ExitCode);
            }
        }
Exemplo n.º 6
0
        private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder, params string[] env)
        {
            Process process = new Process
            {
                StartInfo =
                {
                    FileName = m_executablePath,
                    Arguments = settings.Arguments,
                    UseShellExecute = false,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    StandardOutputEncoding = Encoding.UTF8,
                    RedirectStandardError = true,
                    WorkingDirectory = m_defaultWorkingDirectory,
                    CreateNoWindow = true,
                },
            };

            if (settings.EnvironmentModifier != null)
                settings.EnvironmentModifier(process.StartInfo.EnvironmentVariables);

            // add additional environment variables
            for (int n = 0; n < env.Length; n += 2)
                process.StartInfo.EnvironmentVariables[env[n]] = env[n + 1];

            process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data);

            // start process
            process.Start();

            // read asynchronously from the error stream
            process.BeginErrorReadLine();
            return process;
        }