C# P4Api 使用 -zversion 和 -zprog 进行自定义日志记录

C# P4Api use -zversion and -zprog for custom logging

我正在使用 P4Api 使用 C# 构建一个应用程序,但我需要使用参数 -zprog 和 -zversion 以便服务器日志显示命令来自哪个应用程序,如此 post 解释:https://community.perforce.com/s/article/11551

string logParams = "-zprog=MyApp -zversion=1.1";
P4Command cmd = new P4Command(rep, "sync", false, path);

正如 link 所解释的,使用 cmd,这个命令应该是 "p4 -zprog=MyApp -zversion=1.1 sync [path]",所以这个参数应该是 "p4" 而不是 "sync"

是否可以将此参数添加到命令中? 如果没有,关于如何做到这一点有什么建议吗?

谢谢。

我最终摆脱了 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 return 获取数据,就像命令 "where" return 是工作区路径中的 Depot 路径。

我希望这对其他有类似问题的人有所帮助。