我正在使用C#构建一个使用P4Api的应用程序,但是我需要使用参数-zprog和-zversion,这样服务器日志就可以显示命令从哪个应用程序中来,这篇文章解释道:https://community.perforce.com/s/article/11551。
string logParams = "-zprog=MyApp -zversion=1.1";
P4Command cmd = new P4Command(rep, "sync", false, path);正如链接所解释的那样,使用cmd,这个命令应该是"p4 -zprog=MyApp -zversion=1.1 sync path",因此这个参数应该是"p4“,而不是”p4“。
是否可以将此参数添加到命令中?如果没有,对如何做到这一点有什么建议?
谢谢。
发布于 2020-01-30 12:14:11
正如注释中所建议的那样,我最终摆脱了P4Api,基本上是使用System.Diagnostics.Process调用p4.exe并传递一些参数来完成我需要做的任何事情。这是我的解决办法:
public bool RunCommand<T>(string command, Func<string, string, T> output,out T outputResult, params string[] args)
{
string logParams = "-zprog=MyApp -zversion=1.1";
Process proc = new Process();
proc.StartInfo.WorkingDirectory = "";
proc.StartInfo.FileName = "p4.exe";
proc.StartInfo.Arguments = logParams + " " + command + " ";
foreach (string s in args)
{
proc.StartInfo.Arguments += s + " ";
}
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
StreamReader strOutput = proc.StandardOutput;
StreamReader strError = proc.StandardError;
outputResult = output(strOutput.ReadToEnd(), strError.ReadToEnd());
proc.WaitForExit();
return true;
}Func<string, string, T> output允许我解析进程输出和错误,从P4查询中获取所需的数据,并使用out T outputResult返回数据,比如从工作区路径返回Depot路径的命令"where“。
我希望这对其他有类似问题的人有所帮助。
https://stackoverflow.com/questions/59932485
复制相似问题