如何使用C#调用git命令?
# 第一步,如何在C#中调用命令行工具?
static class CmdHelper
{
public static bool ExecuteTool(string toolFile, string args, out string result, out string errorMsg)
{
bool success = false;
string msg = string.Empty;
string errMsg = string.Empty;
try
{
Process p;
ProcessStartInfo psi;
psi = new ProcessStartInfo(toolFile);
psi.Arguments += args;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true; //允许重定向标准输出
psi.CreateNoWindow = true;
psi.RedirectStandardError = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
p = Process.Start(psi);
msg = p.StandardOutput.ReadToEnd(); //Call ReadToEnd() before WaitForExit()
p.WaitForExit();
success = p.ExitCode == 0;
if (!success)
{
StringBuilder sb = new StringBuilder();
sb.Append(p.StandardError.ReadToEnd());
errMsg = sb.ToString();
}
p.Close();
}
catch (Exception ex)
{
errMsg = ex.Message + " when invoke " + toolFile;
return false;
}
finally
{
result = msg;
errorMsg = errMsg;
}
return success;
}
}
参考资料:Process.StandardOutput使用注意事项(转) (opens new window)
# 第二步,找到git.exe的位置,调用之。
通过命令调用git命令,需要带上 git-dir
work-tree
两个参数。
具体的使用示例,可以看这里 (opens new window)
完了~ 好吧,这又是一篇很懒的博客。