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

VS2017中System.Runtime版本冲突无法解决及测试无法发现求助

解决VS2017 Test Explorer无法发现xUnit测试及System.Runtime版本冲突问题

我之前也碰到过类似的情况,版本冲突确实会导致Test Explorer无法正常识别测试,咱们一步步来解决:

一、先搞定程序集版本冲突

你提到的Found conflicts between different versions of the same dependent assembly警告是关键,先把这个解决掉:

  • 打开NuGet包管理器控制台,针对每个项目(包括原来的3个项目和新增的2个xUnit测试项目),运行命令统一System.Runtime版本:
    Update-Package -reinstall System.Runtime -ProjectName 你的项目名称
    
    把命令里的“你的项目名称”替换成实际的项目名,逐个执行。
  • 如果还是有冲突,直接编辑每个项目的.csproj文件,找到所有System.Runtime的引用节点,把版本号改成完全一致的(比如统一用4.3.0版本,这是VS2017比较常用的兼容版本),示例:
    <Reference Include="System.Runtime, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    
  • 更高效的方式是在解决方案根目录新建一个Directory.Build.props文件,内容如下,强制所有项目使用相同的依赖版本并自动生成绑定重定向:
    <Project>
      <PropertyGroup>
        <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
        <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Update="System.Runtime" Version="4.3.0" />
      </ItemGroup>
    </Project>
    
    保存后,VS会自动把这个配置应用到所有项目里。

二、检查xUnit测试项目的配置

版本冲突解决后,再确认测试项目的配置是否正确:

  • 确保测试项目安装了正确的NuGet包:必须有xunit(核心测试库)和xunit.runner.visualstudio(VS测试运行器,没有这个Test Explorer根本找不到测试),而且两个包的版本要匹配,比如都用2.4.1这种稳定版本。
  • 右键测试项目→属性→生成,检查目标框架是否和其他项目兼容,比如如果主项目用的是.NET Framework 4.6.1,测试项目就别用4.7.2,框架不兼容也会导致测试无法被发现。
  • 清理并重新生成解决方案:点击菜单生成→清理解决方案,然后重新生成解决方案,之后打开Test Explorer点击顶部的“重新发现测试”按钮试试。

三、最后试试缓存清理

如果上面的步骤都没用,大概率是VS缓存的问题:

  • 关闭VS,找到解决方案目录下的.vs隐藏文件夹,直接删除它,然后重新打开VS加载解决方案,很多奇怪的测试发现问题都能这么解决。
  • 顺便检查下Test Explorer的筛选器,别不小心勾选了“只显示失败的测试”或者其他筛选条件,导致看不到所有测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:52:45