private bool NuGetOverlay(string package, string version, string packageDirectory)
        {
            var process = AsyncProcess.Start(_nugetExe, string.Format(@"overlay ""{0}"" -Version {1} -OverlayPackageDirectory ""{2}""", package, version, packageDirectory));

            foreach (var txt in process.StandardOutput)
            {
                if (!string.IsNullOrEmpty(txt))
                {
                    Log.LogMessage("NuGet:{0}", txt);
                }
            }

            foreach (var txt in process.StandardError)
            {
                if (!string.IsNullOrEmpty(txt))
                {
                    if (process.ExitCode != 0)
                    {
                        Log.LogError("NuGet Error:{0}", txt);
                    }
                    else
                    {
                        Log.LogWarning("NuGet Error:{0}", txt);
                    }
                }
            }
            return(process.ExitCode == 0);
        }
        public static AsyncProcess Start(ProcessStartInfo startInfo, IDictionary environment) {
            startInfo.RedirectStandardError = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.UseShellExecute = false;

            if (environment != null) {
                foreach (var i in environment.Keys) {
                    startInfo.EnvironmentVariables[(string)i] = (string)environment[i];
                }
            }

            var process = new Process {
                StartInfo = startInfo
            };

            var result = new AsyncProcess(process);

            process.EnableRaisingEvents = true;

            // set up std* access
            process.ErrorDataReceived += (sender, args) => result._stdError.Add(args.Data);
            process.OutputDataReceived += (sender, args) => result._stdOut.Add(args.Data);
            process.Exited += (sender, args) => {

                result._stdError.Completed();
                result._stdOut.Completed();
            };

            process.Start();

            process.BeginErrorReadLine();
            process.BeginOutputReadLine();

            return result;
        }
Example #3
0
        public static AsyncProcess Start(ProcessStartInfo startInfo, IDictionary environment)
        {
            startInfo.RedirectStandardError  = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.UseShellExecute        = false;

            if (environment != null)
            {
                foreach (var i in environment.Keys)
                {
                    startInfo.EnvironmentVariables[(string)i] = (string)environment[i];
                }
            }

            var process = new Process {
                StartInfo = startInfo
            };

            var result = new AsyncProcess(process);

            process.EnableRaisingEvents = true;

            // set up std* access
            process.ErrorDataReceived  += (sender, args) => result._stdError.Add(args.Data);
            process.OutputDataReceived += (sender, args) => result._stdOut.Add(args.Data);
            process.Exited             += (sender, args) => {
                result._stdError.Completed();
                result._stdOut.Completed();
            };

            process.Start();

            process.BeginErrorReadLine();
            process.BeginOutputReadLine();

            return(result);
        }