dotnet 执行命令常用代码
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; }