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

升级至.NET6后单元测试无法运行 报TestPlatformException异常

问题原因

这个MissingMethodException是测试平台组件版本不匹配导致的典型冲突:从net472迁移到.NET6时,很容易残留旧框架时代的测试程序集引用、NuGet缓存中不同版本的TestPlatform组件,和Visual Studio自带的测试运行时版本对不上,就会出现找不到TestHostManagerFactory构造函数的问题——之前重装NuGet包没有清理缓存、没有统一测试包版本的话,根本没触碰到核心冲突点。

修复步骤

按以下顺序操作,基本都能解决问题:

  • 统一测试相关NuGet包版本
    先卸载所有测试相关NuGet包,包括Microsoft.NET.Test.Sdk、对应测试框架的包和适配器(用MSTest就卸MSTest.TestFramework、MSTest.TestAdapter;用xUnit就卸xunit、xunit.runner.visualstudio;用NUnit就卸NUnit、NUnit3TestAdapter),之后重新安装同一大版本的包。注意*Microsoft.NET.Test.Sdk版本要和你当前VS版本匹配*:你用的是VS2022 17.2.5,就装17.2.x版本的Microsoft.NET.Test.Sdk,不要装17.3及以上版本,否则会和VS自带的测试平台不兼容。
  • 彻底清理残留文件和缓存
    1. 关闭所有打开的Visual Studio窗口
    2. 删除解决方案根目录下的隐藏.vs文件夹,同时删除所有测试项目下的bin、obj文件夹
    3. 打开VS开发者命令提示符,执行dotnet nuget locals all --clear清空全局NuGet缓存
    4. 打开测试项目的.csproj文件,手动删除所有以Microsoft.VisualStudio.TestPlatform开头的独立引用——这类引用是net472时期可能手动添加的,.NET 6下不需要手动引用,会由Microsoft.NET.Test.Sdk自动传递正确版本的依赖
  • 调整测试运行配置
    打开VS「测试」菜单下的测试选项,取消勾选「自动适配测试处理器架构」,手动选择和项目编译目标一致的架构(.NET6项目默认大多是64位,选X64即可),同时确认没有勾选「使用旧版测试平台」。
  • 修复VS组件(如果以上操作后仍有问题)
    打开Visual Studio Installer,找到对应VS2022实例选择「修复」,修复会重置VS自带的测试平台组件,解决升级过程中组件损坏、版本不对的问题。修复完成后可以先在解决方案根目录执行dotnet test,命令行能正常跑通测试的话,VS里的Test Explorer也会正常识别运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:40:36