2

我正在编写一个小实用程序来使用 c# 程序执行 svn 命令

这是我程序中的关键行

System.Diagnostics.Process.Start("CMD.exe", @"svn checkout C:\TestBuildDevelopment\Code");

正如我所假设的,上面的代码应该能够进行 svn check out 并将所有代码下载到上面提到的本地路径。但是发生的事情是,命令提示符以 c# 项目的默认路径打开,并且什么也不做。

如果我在命令行中运行这个 svn 命令,它工作正常。但是当我使用 C# 运行时,它只是弹出命令提示符而不执行 svn checkout 操作。关于出了什么问题的任何想法?

4

3 回答 3

8

您不必运行 CMD.exe。CMD.exe 只是一个调用其他程序集的程序。您可以使用参数 checkout 直接调用 svn.exe ...(但是否缺少 url?)

Process.Start("svn.exe", @"checkout C:\TestBuildDevelopment\Code");

你也可以试试这个:

Process proc = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.RedirectStandardOutput = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "svn.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "checkout ...";

proc.StartInfo = startInfo;
if(proc.Start()) {
    proc.WaitForExit();
}
于 2012-08-28T06:12:28.950 回答
4

您需要添加参数/c。尝试:

Process.Start("CMD.exe", @"/c svn checkout C:\TestBuildDevelopment\Code");

该参数/c表示cmd应该执行命令并退出。

于 2012-08-28T06:10:59.330 回答
1

正如 Jon 所说,在这里 svnsharp 将是一个不错的选择。但 IMO 的问题是炮击 cmd.exe,而不是你实际想要运行的 exe:

Process.Start(@"path\to\svn.exe", @"checkout ""C:\TestBuildDevelopment\Code""");

虽然 aProcessStartInfo会更容易设置工作路径等。

于 2012-08-28T06:13:11.753 回答