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

VS测试资源管理器请求的Microsoft.Extensions.DependencyInjection.Abstractions版本低于已安装版本

.NET Framework 4.8.1测试项目中Microsoft.Extensions.DependencyInjection.Abstractions版本匹配问题

我有一个基于.NET Framework 4.8.1的测试项目,已安装3.1.9版本的Microsoft.Extensions.DependencyInjection.Abstractions NuGet包(该版本是同项目安装的CSLA.NET NuGet包的最低要求版本)。但在测试资源管理器中运行测试时,程序却尝试加载**旧版本(v3.1.0)**的该包;后续将包版本升级到3.1.32后,测试运行时又会去查找3.1.9版本。

已尝试以下操作但未解决问题:

  • 将包版本升级至v3.1.32
  • 移除测试项目中对该包的直接引用(该包在被测试项目中已使用)
  • 执行清理+重建操作
  • 删除测试项目的bin和obj文件夹
  • 升级Visual Studio 2022至最新版本17.5.3

查看测试项目的bin\Debug目录,能确认正确版本的包文件已存在。

可能的解决方案

1. 显式添加程序集版本重定向

在测试项目的App.config中添加程序集绑定配置,强制CLR加载指定版本的组件:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions"
                          publicKeyToken="adb9793829ddae60"
                          culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.32" newVersion="3.1.32" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

注意:将newVersion替换为你实际安装的包版本(比如3.1.9或3.1.32)。

2. 排查依赖链中的间接引用

查看被测试项目和测试项目的完整NuGet依赖树,确认是否有第三方包间接引用了更低版本的Microsoft.Extensions.DependencyInjection.Abstractions:

  • 通过Visual Studio的NuGet包管理器-已安装-查看依赖项逐一检查
  • 运行命令列出所有传递依赖:
dotnet list package --include-transitive

找到冲突来源后,可针对性升级相关第三方包,或补充对应的版本重定向配置。

3. 绕过测试资源管理器缓存验证

尝试用命令行直接运行测试,排查是否是Visual Studio测试资源管理器的缓存问题:

vstest.console.exe "你的测试项目路径\bin\Debug\TestProject.dll"

如果命令行运行正常,可尝试重置Visual Studio的组件缓存:关闭VS后删除%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_XXX\ComponentModelCache目录(XXX为VS实例标识),再重新打开项目。

4. 检查CSLA.NET的版本约束

确认当前使用的CSLA.NET包是否对Microsoft.Extensions.DependencyInjection.Abstractions有严格的版本限制,尝试升级CSLA.NET到最新兼容版本,看是否能自动解决版本匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:33:15