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

ASP.NET Core 7 MVC XUnit测试缺失testhost.deps.json问题求助

修复ASP.NET Core 7 MVC XUnit测试中缺失testhost.deps.json的问题

以下是经过验证的几种修复方案,按优先级尝试:

1. 清理并调整测试项目的依赖引用

  • 打开测试项目的NuGet包管理器,卸载Microsoft.VisualStudio.TestPlatform.TestHost包,这个包不需要手动安装,Microsoft.AspNetCore.Mvc.Testing已经包含了适配的测试宿主组件,手动引用容易引发版本冲突。
  • 确保Microsoft.AspNetCore.Mvc.Testing的版本与你的ASP.NET Core 7项目版本完全一致(比如均为7.0.x系列),重新安装该包。
  • 手动删除测试项目的bin和obj文件夹,重新生成整个解决方案。

2. 修正Program类的访问权限

在你的ASP.NET Core 7 MVC项目的Program.cs文件末尾添加一行代码,将默认文件级私有Program类设为公共可访问:

public partial class Program { }

WebApplicationFactory需要直接引用Program类来生成完整的测试环境,默认私有访问会导致宿主依赖文件生成不完整。

3. 禁用测试运行器的影子复制

针对XUnit运行器

在测试项目根目录创建xunit.runner.json文件,写入以下内容:

{
  "shadowCopy": false
}

针对Visual Studio测试运行器

创建或修改解决方案的.runsettings文件,添加影子复制禁用配置:

<RunSettings>
  <RunConfiguration>
    <ShadowCopy>false</ShadowCopy>
  </RunConfiguration>
</RunSettings>

在Visual Studio中通过「测试」→「配置运行设置」选择该文件后执行测试。

4. 调整项目输出路径(避开OneDrive同步目录)

你的测试项目位于OneDrive目录下,文件同步延迟或锁定可能导致文件缺失。修改测试项目的.csproj文件,将输出路径改为本地非同步目录:

<PropertyGroup>
  <OutputPath>$(SolutionDir)BuildOutput\$(Configuration)\$(TargetFramework)\</OutputPath>
  <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>

修改后清理并重新生成项目,再次运行测试。

5. 临时迁移项目到本地目录

将整个解决方案从OneDrive目录移动到本地普通文件夹(如C:\Projects\HomeworkProject),重新打开解决方案,清理并生成所有项目,再执行测试,验证是否是OneDrive同步导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:20:43