1

我有控制台应用程序。我正在复制我的 svn 项目。我的代码是:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

startInfo.FileName = @"c:\windows\system32\cmd.exe";
startInfo.Arguments = @"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin dump E:\Repositories\Test > E:\AFS\AFS.Schedule.VisualSVN\TestFolder\Dest\Test\NewTest.dump";

startInfo.Verb = "runas";

process.StartInfo = startInfo;
process.Start();

process.WaitForExit();

问题是:我能够创建转储文件。但是大小是0kb。

让我知道我错过了什么。

4

2 回答 2

1

确保您的标准命令提示符引用了它所需的 PATH:

在你的情况下C:\Program Files (x86)\VisualSVN Server\bin;

以下是有关如何在 Windows 中编辑 PATH 变量的一些说明。

解释:

问题是您的环境路径设置不正确,因此在您的应用程序运行的上下文中,它无法引用您的 Visual SVN 安装的正确路径,它可能试图访问您机器上的另一个版本的 Subversion。

为了测试这个理论,cmd通过 VisualSVN 服务器管理应用程序打开一个提示(这将临时添加正确的 PATH 变量):VisualSVN Server > Actions > All Task > Start Command Prompt

(确保您选择了导航中的顶级项目,而不是树中的存储库,否则您将不会在All Tasks菜单中获得该选项)

这应该转储该回购的完整备份。

于 2013-11-06T13:05:42.613 回答
1

您的代码中的路径无效。

错误的字符串是:

startInfo.Arguments = @"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin dump E:\Repositories\Test > E:\AFS\AFS.Schedule.VisualSVN\TestFolder\Dest\Test\NewTest.dump";

正确的字符串是:

startInfo.Arguments = @""C:\Program Files (x86)\VisualSVN Server\bin\svnadmin.exe" dump E:\Repositories\Test > E:\AFS\AFS.Schedule.VisualSVN\TestFolder\Dest\Test\NewTest.dump";

注意缺失.exe和引用。

于 2013-09-13T12:09:22.640 回答