svn使用C#程序检查

时间:2012-08-28 06:08:07

标签: c# svn command-prompt

我正在编写一个小工具来使用c#program

执行svn命令

这是我程序中的关键行

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

正如我所假设的,上面的代码应该能够svn签出并将所有代码下载到上面提到的本地路径。但是发生了什么,命令提示符打开了c#项目的默认路径,什么也没做。

如果我在命令行中运行此svn命令,它可以正常工作。但是当我使用C#运行时,它只是弹出命令提示符而不执行svn checkout操作。什么出错了?

3 个答案:

答案 0 :(得分:7)

您不必运行CMD.exe。 CMD.exe只是一个调用其他程序集的程序。 您可以使用参数checkout直接调用svn.exe ...(但是没有丢失网址吗?)

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();
}

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

Jon指出,svnsharp在这里是个不错的选择;但IMO的问题是炮轰cmd.exe,而不是你真正想要运行的exe:

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

虽然ProcessStartInfo可以更容易设置工作路径等。