private int Execute(string str, bool silence = false)
{
int result;
try
{
Console.WriteLine("nuget " + str);
Process process = this.ExecuteCMD(str);
StringBuilder stringBuilder = new StringBuilder();
using (StreamReader standardOutput = process.StandardOutput)
{
while (!standardOutput.EndOfStream)
{
string text = standardOutput.ReadLine();
Console.WriteLine(text);
if (text.Contains("forbidden"))
{
process.Kill();
process.WaitForExit();
throw new Exception("权限不足");
}
stringBuilder.Append(text);
}
}
string str2 = process.StandardError.ReadToEnd();
process.WaitForExit();
int exitCode= process.ExitCode;
if (exitCode!= 0) {
string text2 = stringBuilder.ToString() + "\r\n" + str2; Console.WriteLine(text2);
if (!silence) {
throw new Exception(text2);
}
Console.WriteLine("nuget operation failed to achieve the desired effect.");
}
result =exitCode;
} catch (Exception) { throw; }
return result;
}
private Process ExecuteCMD(string str)
{
ProcessStartInfo startInfo;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
str = " /usr/local/bin/nuget.exe " + str;
startInfo = new ProcessStartInfo("mono", str)
{
RedirectStandardOutput = true,
CreateNoWindow = false,
ErrorDialog = false,
RedirectStandardError = true
};
}
else
{
startInfo = new ProcessStartInfo("nuget", str)
{
RedirectStandardOutput = true,
CreateNoWindow = false,
ErrorDialog = false,
RedirectStandardError = true
};
}
return Process.Start(startInfo);
}
private string ExecuteCMDWithOutput(string str)
{
Process process = Process.Start(new ProcessStartInfo("nuget", str)
{
RedirectStandardOutput = true,
CreateNoWindow = false
});
string result = string.Empty;
using (StreamReader standardOutput = process.StandardOutput)
{
while (!standardOutput.EndOfStream)
{
string text = standardOutput.ReadLine();
if (text.Contains("xxx") || text.Contains("xxx"))
{
result = text;
}
}
if (!process.HasExited)
{
process.Kill();
return result;
}
}
return result;
}