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

Azure Pipeline中Microsoft Tests读取文件失败求助

解决Azure Pipeline中测试项目找不到JSON文件的问题

先确认.runsettings的部署配置是否生效

你的.runsettings文件必须明确开启部署,配置要写成这样:

<RunSettings>
  <DeploymentEnabled>True</DeploymentEnabled>
</RunSettings>

划重点:如果是.NET Core/.NET 5+的测试项目,[DeploymentItem]基本没用,这类项目靠的是输出目录复制,不是老的测试部署机制,直接把这个特性删了就行。

调整文件读取的路径逻辑

本地测试和Pipeline的工作目录不一样,别用硬编码的相对路径,改成基于测试程序集的输出目录来拼路径:

var outputDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var jsonPath = Path.Combine(outputDir, "jsontest", "json1.json");
var jsonContent = File.ReadAllText(jsonPath);

同时检查.csproj里有没有正确包含这个文件,确保复制规则生效:

<ItemGroup>
  <Content Include="jsontest\json1.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

检查Azure Pipeline的测试任务配置

如果用DotNetCoreCLI test任务,要通过--settings参数指定你的.runsettings文件路径,比如:

- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/*Tests.csproj'
    arguments: '--settings $(Build.SourcesDirectory)/YourTestProject/YourSettings.runsettings'

要是用VSTest任务,直接在任务设置里指定.runsettings文件就行。

先验证文件是否真的被复制到Pipeline里

可以在测试任务前加个PowerShell任务,搜一下文件有没有:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Get-ChildItem -Path $(Build.BinariesDirectory) -Recurse -Name "json1.json"

如果搜不到,说明文件没被正确复制到输出目录,回去检查.csproj的配置或者VS里的文件属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:45:36