zoukankan      html  css  js  c++  java
  • 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() + " " + 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;
    }
  • 相关阅读:
    SpringMVC基础知识
    git pull 和git fetch的区别
    动态规划的原理?
    为什么要使用volatile修饰呢?
    内部类,匿名内部类?
    什么是性能优化?
    如何定位CPU瓶颈?
    什么是程序的耦合?
    什么是性能优化?
    Class类的常用方法?
  • 原文地址:https://www.cnblogs.com/wolbo/p/12196439.html
Copyright © 2011-2022 走看看