1

我正在尝试使用 C# 代码备份我的存储库

        Process svnCommand = null;
        var psi = new ProcessStartInfo("svnadmin");
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;
        psi.UseShellExecute = false;
        psi.Arguments= @"dump C:\Repositories\Myrepo > C:\temp\myrepodumpfile.dump";

        using (svnCommand = Process.Start(psi))
        {     
            var myoutput = svnCommand.StandardOutput;

            var myerror = svnCommand.StandardError;



            Debug.Write("Output :" + Environment.NewLine +
                Environment.NewLine + myoutput.ReadToEnd() +
                Environment.NewLine + "Error :" +
                Environment.NewLine + Environment.NewLine +
                myerror.ReadToEnd());

            svnCommand.Close();
        }

当我从命令行使用转储命令时

svnadmin dump C:\Repositories\Myrepo > C:\temp\myrepodumpfile.dump

它工作正常,但是当我尝试通过上面给出的 C# 代码使用它时,它会给出错误

svnadmin: E205000: Try 'svnadmin help' for more info
svnadmin: E205000: Too many arguments

我的 SVN 信息:

SVN 版本 1.7.5 环境变量 aslo 设置(我可以直接从 cmd 使用 sv)

似乎无法弄清楚是什么问题

4

1 回答 1

3

>是命令行的一个特性;从 C# 启动进程时不能使用它。

它的作用是>将进程写入 StandardOutput 的输出并将其写入文件。这也是你需要在你的程序中实现的,例如

var psi = new ProcessStartInfo("svnadmin");
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.UseShellExecute = false;
psi.Arguments= @"dump C:\Repositories\Myrepo";

using (var svnCommand = Process.Start(psi))
{     
    var myoutput = svnCommand.StandardOutput;

    File.WriteAllText(@"C:\temp\myrepodumpfile.dump", myoutput.ReadToEnd());

    svnCommand.WaitForExit();
}
于 2012-06-29T07:37:33.567 回答