in nuget-extensions/nuget-runner/src/NuGetRunner.cs [93:144]
public int Run(IEnumerable<string> argz)
{
CallEvents(myStartEvents);
try
{
if (myForceVerification)
{
VerifyNuGetAssembly();
AssemblyStrongNameHelper.VerifyStrongName(myNuGetExe);
}
var process = new Process();
var pi = process.StartInfo;
pi.FileName = myNuGetExe;
pi.Arguments = CommandLineHelper.Join(argz);
pi.UseShellExecute = false;
pi.RedirectStandardInput = true;
pi.RedirectStandardError = true;
pi.RedirectStandardOutput = true;
pi.CreateNoWindow = true;
foreach (var e in myEnv)
{
if (!pi.EnvironmentVariables.ContainsKey(e.Key))
{
pi.EnvironmentVariables.Add(e.Key, e.Value);
}
else if (myCombinableVariables.Contains(e.Key))
{
pi.EnvironmentVariables[e.Key] += string.Format(";{0}", e.Value);
}
}
process.OutputDataReceived += (sender, args) => Console.Out.WriteLine(args.Data);
process.ErrorDataReceived += (sender, args) => Console.Error.WriteLine(args.Data);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.StandardInput.Close();
process.WaitForExit();
return process.ExitCode;
}
finally
{
CallEvents(Enumerable.Reverse(myFinishEvents));
}
}