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文件,内容如下,强制所有项目使用相同的依赖版本并自动生成绑定重定向:
保存后,VS会自动把这个配置应用到所有项目里。<Project> <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> <ItemGroup> <PackageReference Update="System.Runtime" Version="4.3.0" /> </ItemGroup> </Project>
二、检查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
相关产品推荐
相关产品推荐

