You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps中dotnet test栈追踪去除/agent/_work/1/s前缀配置方法

移除Azure DevOps中dotnet测试栈追踪的代理路径前缀方案

一、Azure DevOps任务层面配置

  • 调整测试任务工作目录
    在Azure DevOps的DotNetCoreCLI@2任务中,将工作目录设为源码根目录$(Build.SourcesDirectory),让dotnet test在此目录执行,栈追踪会生成相对路径而非带代理前缀的绝对路径。示例任务配置:
    - task: DotNetCoreCLI@2
      displayName: 'Run tests'
      inputs:
        command: 'test'
        projects: '**/*Tests.csproj'
        workingDirectory: '$(Build.SourcesDirectory)'
        arguments: '--configuration Release --logger "trx"'
    
  • 批量修改测试报告路径(可选)
    如果上述方法无效,可在生成trx报告后用脚本替换路径前缀,再发布测试结果。PowerShell示例脚本:
    $trxPath = "$(Agent.TempDirectory)/testResults.trx"
    $content = Get-Content $trxPath -Raw
    $content = $content -replace '/agent/_work/1/s/', '/'
    Set-Content $trxPath $content
    
    执行脚本后,在PublishTestResults任务中使用修改后的trx文件即可。

二、MSBuild属性配置

在测试项目的.csproj文件中添加以下属性,强制符号文件和栈追踪使用相对路径:

<PropertyGroup>
  <!-- 指定源码根目录,让栈追踪路径基于此根生成 -->
  <SourceRoot>$(MSBuildProjectDirectory)/../</SourceRoot>
  <!-- 生成便携格式的调试符号,确保路径正确映射 -->
  <DebugType>portable</DebugType>
  <DebugSymbols>true</DebugSymbols>
</PropertyGroup>

也可以在Azure DevOps构建任务中通过参数传递:

arguments: '--configuration Release /p:SourceRoot=$(Build.SourcesDirectory) /p:DebugType=portable'

三、xUnit自定义异常过滤器

利用xUnit的异常过滤器,在测试失败时自动清理栈追踪中的代理路径前缀:

  1. 创建自定义过滤器类:
using Xunit;
using Xunit.Abstractions;
using Xunit.Sdk;

namespace YourTestProjectNamespace;

public class PathCleanupExceptionFilter : IAsyncExceptionFilter
{
    private readonly string _agentSourcePrefix = "/agent/_work/1/s/";

    public Task OnExceptionAsync(ExceptionFilterContext context)
    {
        if (context.Exception?.StackTrace != null)
        {
            // 替换代理路径前缀为根路径
            context.Exception.StackTrace = context.Exception.StackTrace.Replace(_agentSourcePrefix, "/");
        }
        return Task.CompletedTask;
    }
}
  1. 在测试项目的xunit.runner.json文件中注册该过滤器:
{
  "filters": [
    { "type": "YourTestProjectNamespace.PathCleanupExceptionFilter", "assembly": "YourTestProjectAssemblyName" }
  ]
}

注意替换命名空间和程序集名称为实际项目值。

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:52:33