powershell - TFS 2013 默认模板运行 powershell 脚本和日志输出

标签 powershell logging tfs tfsbuild

在 VS 2013 中,从构建过程中运行 powershell 脚本变得非常直接。不幸的是,tfs 构建日志中没有写入主机命令。

因此,在构建完成后,我无法查看日志文件并查看 powershell shell 脚本 的内容。实际上做到了。

日志文件只说:

Run optional script after MSBuild 00:03
Run optional script before Test Runner 00:00
Run VS Test Runner 00:00
Run optional script after Test Runner 00:00
...

ActivityLog.AgentScope.1.xml 日志文件更健谈,但信息仍然太少。
Run optional script after MSBuild00:00:03
InputsEnvironmentVariables: 
Enabled: True
Arguments: 
FilePath: $/CMP04/Some/Project/Main/Web/.scripts/CI/CI.ps1

OutputsResult: 0

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -NoProfile -NonInteractive -File "D:\ws_build\1\CMP04\IP-Main\src\Some\Project\Main\Web\.scripts\CI\CI.ps1"

知道如何在 tfs 构建日志中获取任何调试信息吗?
我当然可以创建一个额外的日志文件,但那是计划 b :)

编辑: write-host 正在记录到代理的日志 xml。 write-verbose 不是。

最佳答案

VS 2013 中不再显式设置默认构建模板的详细程度;相反,每个构建都会记录诊断信息。正如您提到的,原始数据被转储到 Build Drops 文件夹中的代理的 xml 日志中。但是,为了更好地查看它,您必须从 Team Web Access 访问它;您不能再从 Visual Studio 中访问,这是有道理的,因为在 Visual Studio 中查看这些诊断日志通常会导致 VS 挂起。

因此,要在 Team Web Access 中查看诊断日志,您可以:

  • 如果使用 VS 2013,您可以在 Build Explorer 中右键单击构建并选择 Open in Browser .

  • 或者
  • 从 Team Web Access 的 Team Project 页面中,选择 Build选项卡,找到您感兴趣的构建并双击它,然后选择 Diagnostics标签。

  • 以下是我从 TFS 2013 Update 2 的实验中发现的:

    在构建摘要和日志 View (VS 中仅有的 2 个可用 View )中,只会显示写入错误消息。在 PowerShell 脚本中使用 Write-Error 不会将您的构建标记为 Failed , 反而会导致 Partially Succeed .

    Diagnostics view、Write-Host、Write-Output、Write-Warning 和 Write-Error 都会出现。即使您将 -Verbose 和 -Debug 开关作为 PowerShell 脚本参数传递,Write-Verbose 和 Write-Debug 也不会显示。

    关于powershell - TFS 2013 默认模板运行 powershell 脚本和日志输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22219932/

    相关文章:

    powershell - 使用 Start-Process 启动多个进程,然后使用 Stop-Process 终止所有进程

    powershell - 为什么 $_ 不返回完整的对象

    python - 阻止文件被打开

    tfs - 使用来自内部 TFS 的托管池

    tfs - 在 TFS 2012 中隐藏 Sprint Board 中的 "Done"PBI

    powershell - 这两个 $null 值为什么以及如何不同?

    c# - 在服务中获取服务名称

    java - 在没有 BeanNameAware 接口(interface)的情况下将 bean id 记录到 log4j 日志文件中

    c++ - 将消息添加到断言

    tfs - 如何将多个 TFS 存储库拉入单个 Jenkins 作业?