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

Azure Build Pipeline中VSTest v2任务无法找到DLL文件

问题

每次运行Azure Build Pipeline时都会收到警告:未找到匹配给定筛选器'$(BuildConfiguration)*FunctionApp1*.dll,$(BuildConfiguration)**FunctionApp1.dll'的测试源。尽管流水线执行成功,但复制任务无法找到DLL,导致单元测试无法运行。项目使用Visual Basic搭建,已尝试修改VSTest配置、切换构建模式、清理仓库等操作,问题依旧。

当前YAML配置如下:

# Automatically trigger on merges / commits to 'main' branch
trigger:
- main

# Specify build agent image
pool:
  vmImage: 'windows-latest'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '**\*.sln'

- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    msbuildArgs: '/p:PackageLocation="$(BuildConfiguration)'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    solution: '**/*.sln'

- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*FunctionApp1*.dll
     **\$(BuildConfiguration)\**\*FunctionApp1*.dll
     !**\*Microsoft.VisualStudio.TestPlatform*
     !**\obj\**
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: '$(build.sourcesdirectory)'
    Contents: '**\bin\$(BuildConfiguration)\**'
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

仓库中实际存在的DLL路径:

AutomationTest/FunctionApp1Tests/bin/Release/net6.0/FunctionApp1.dll
解决方案

1. 修正VSTest任务的路径筛选规则

当前筛选规则缺少bin目录层,且未覆盖.NET项目编译后生成的目标框架子目录(如net6.0),导致无法匹配到实际DLL。将testAssemblyVer2修改为:

testAssemblyVer2: |
 **\bin\$(BuildConfiguration)\*\*FunctionApp1*.dll
 !**\obj\**
 !**\*Microsoft.VisualStudio.TestPlatform*
  • **\bin\$(BuildConfiguration)\*\*FunctionApp1*.dll:匹配任意目录下bin/[构建配置]/任意子目录中的FunctionApp1相关DLL,覆盖目标框架目录。
  • 保留排除规则避免无关文件干扰。

2. 修复VSBuild任务的语法错误

msbuildArgs中的/p:PackageLocation="$(BuildConfiguration)'存在引号不匹配问题,若无需指定NuGet包输出路径,可直接移除该参数;若需要则补全引号:

msbuildArgs: '/p:PackageLocation="$(BuildConfiguration)"'

该错误可能导致编译过程异常,间接影响后续文件查找。

3. 调整CopyFiles任务的匹配规则

原规则**\bin\$(BuildConfiguration)\**无法正确匹配包含目标框架子目录的文件,修改为:

Contents: '**\bin\$(BuildConfiguration)\*\**'

确保能复制bin/[构建配置]/下所有子目录(包括net6.0)的文件。

4. 验证构建配置变量一致性

确认流水线中BuildConfiguration变量的取值(如Release)与测试项目编译输出的目录名称完全一致,避免因大小写或拼写差异导致路径匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:43:20