【问题标题】:TFS Ignore's Console App Failure - Error CodeTFS Ignore 的控制台应用程序失败 - 错误代码
【发布时间】:2018-09-09 19:41:32
【问题描述】:

我有一个用 C# 编码的控制台应用程序,用于我的 TFS 发布过程,如果此应用程序遇到错误,它将显示错误然后返回非零错误代码,如下所示:

try
{
    //Does stuff...

    return 0; //where 0 = success
}
catch (Exception ex)
{
    Console.WriteLine("Error in Main: " + ex.Message + "\n" + ex.StackTrace);

    for (int i = 0; i < args.Length; i++)
    {
        Console.WriteLine("Value in args[" + i + "]: " + (i == 3 ? "**********" : args[i]));
    }

    //Return error state
    return 1;
}

它由 TFS 中的 PowerShell 脚本调用,如下所示:

# (Does some parsing stuff...)
echo $abc
Start-Process -FilePath $abc-ArgumentList $arguments -NoNewWindow -PassThru -Wait

现在我的问题是有时控​​制台应用程序失败,它会打印错误并正确退出,但由于某种原因 TFS 没有检测到这一点并认为步骤“完成”:

我不确定我缺少什么,我的 PowerShell 脚本/应用程序需要做什么来指示 TFS 发生了故障?我认为 PowerShell 中的“PassThrough”标签应该向上传递错误代码,这不正确吗?

【问题讨论】:

    标签: c# powershell tfs console


    【解决方案1】:

    看起来我对等式的 PowerShell 部分感到困惑,我需要捕获错误并将其传递给 TFS。我发现following solution 很有帮助。也解决了here...

    我做了这样的事情:

    $Output = Start-Process XYZ...
    
    If($Output.Exitcode -ne 0)
    {
         Throw "Errorlevel $($Output.ExitCode)"
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多