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

VS2017同一解决方案中项目加载不同System.Net.Http DLL问题

关于System.Net.Http双程序集引用的问题,我来给你拆解清楚

首先解释为什么会出现两个不同的实例:
你遇到的情况其实是.NET Framework官方参考程序集和Visual Studio构建扩展程序集的差异导致的:

  • 你的类库项目用的是**.NET Framework 4.6.1自带的官方参考程序集**,路径在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\,这是框架标准版本,API是最稳定的官方实现。
  • 而测试项目的引用来自Visual Studio 2017的MSBuild扩展包,路径在C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.BuildExtensions\net461\lib\——这个是VS为了支持跨框架构建等场景额外提供的版本,和官方参考程序集的API细节有差异,这就是MissingMethodException的元凶。

你猜的没错,“创建单元测试”这个功能确实是诱因:它生成测试项目时,默认会绑定到VS自身的构建扩展程序集,而不是和原类库一致的官方框架引用,自然就出现了版本不匹配。


怎么强制VS统一用同一个程序集?

给你三个实用的解决办法,按推荐程度排序:

1. 直接在csproj里锁死引用路径

修改两个项目的.csproj文件,把System.Net.Http的引用改成明确指向官方参考程序集:

<Reference Include="System.Net.Http">
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Net.Http.dll</HintPath>
</Reference>

这样不管VS怎么默认选,都会强制加载你指定的这个版本,从根源上解决不一致问题。

2. 用绑定重定向让运行时统一版本

如果不想改项目文件,可以在测试项目的app.config里加一段绑定重定向,让运行时自动把所有版本的System.Net.Http都导向你要的那个版本:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <!-- 这里的oldVersion范围要覆盖可能出现的版本,newVersion改成你类库用的版本 -->
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

注意:newVersion要和类库项目里System.Net.Http的版本一致(右键类库的引用看属性就能找到版本号)。

3. 手动替换测试项目的引用

右键测试项目里的System.Net.Http引用→属性,先看版本是不是和类库一致,如果不一致,点击“浏览”,手动导航到官方参考程序集路径(C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\)选择System.Net.Http.dll替换掉当前引用,然后把“复制本地”设为True,确保运行时能找到正确的DLL。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:56:55