public int Run()

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));
      }
    }