gpt4 book ai didi

c# - 从 C# 进程调用 Accurev "hist"

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:54 25 4
gpt4 key购买 nike

我无法确定这是 Accurev 特有的问题,还是与从 C# 调用命令行有关。当我弄清楚它是什么时,我会让问题和它的标签更具体。

我有以下两个调用,我可以使用命令提示符成功进行:

  • accurev stat -d -s "ProductionSupport"-fx
  • accurev hist -s "ProductionSupport"-ftx -e "1570567"

在这两种情况下,我都可以看到 xml 作为结果。

但是我想从 C# 程序进行这些调用,其中第一个运行良好但第二个莫名其妙地返回一个空字符串。

    public string CallAccurev(string arguments)
{
Process cmdUtility = new Process
{
StartInfo =
{
FileName = "C:\\Program Files (x86)\\AccuRev v5.5\\bin\\accurev.exe",
Arguments = arguments,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
}
};
cmdUtility.Start();
var s = cmdUtility.StandardOutput.ReadToEnd();
cmdUtility.WaitForExit();
return s;
}

我的电话是这样的:

var checkInComment = CallAccurev("hist -s " + _streamName + " -e " + Convert.ToString(processedFile.TransId) + " -ftx");

var filesString = CallAccurev("stat -d -s " + _streamName + " -fex");

为了解决这个问题,我尝试将我的“hist”调用及其参数放入一个 .Bat 文件中。我可以看到双击该文件会产生预期的行为,但是当我从代码中调用它时,我再次得到空字符串。

非常感谢任何关于如何调试我的 hist 调用期间发生的事情的答案或线索!

最佳答案

我认为您需要在流程完成后阅读标准输出。

cmdUtility.WaitForExit();
var s = cmdUtility.StandardOutput.ReadToEnd();

但是,直接读取 Accurev 输出有时会导致缓冲区溢出。您可能想要使用异步读取进行调查。 How to spawn a process and capture its STDOUT in .NET?

关于c# - 从 C# 进程调用 Accurev "hist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com