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
相关产品推荐
相关产品推荐

