未能加载文件或程序集“System.Net.Http, Version=4.2.0.0,。。。”或它的某一个依赖项

文章描述了一位开发者在更新操作系统和.NET版本后遇到的程序集加载错误,特别是System.Net.Http版本问题。通过修改项目文件和web.config中的版本信息,问题最终得到解决,但开发者对微软IDE的易用性和稳定性表达了不满。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无语了,这笃NET。

页面运行过程中,出现了一个错误:

未能加载文件或程序集“System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

类似这样:
在这里插入图片描述
这是一个几年前的项目。当时还是.NET 4.6.2;今年重新拿起来开发,开发环境的操作系统从WIN7变成了WIN10,.NET也升级到了…NET 4.8。估计是跟这个有关系。

卸载项目,编辑项目文件,将里面指定的System.Net.Http版本号去掉:

<Reference Include="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

==>

<Reference Include="System.Net.Http" />

但是仍然报错,只不过版本号变成了4.2.0.0:

未能加载文件或程序集“System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

考究引用的dll路径,是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.8\System.Net.dll,估计.NET4.8下这个System.Net.Http,版本是4.2.0.0。那么为啥还会报错,搞不懂。

在网上寻寻觅觅,有人说要将web.config里的版本号改回4.0.0.0。我试着将newVersion改成4.0.0.0,果然可以了。但我又改回4.2.0.0,仍然没有问题,再也无法重现当时的错误。

<dependentAssembly>
  <assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/>
</dependentAssembly>

这就令人尴尬了。不知道它为什么报错,然后也不知道它为什么又不报错了。微软搞的东西,向来标榜傻瓜式操作,但这一招也错误地用在程序员身上。傻瓜式的操作,掩盖了太多的细节和原理,反而不利于程序员进阶。另外,曾经号称宇宙级IDE的visual studio,2022这个版本,连在文件中查找这个最基本的功能都不能保证了,查一个东西,有些能查出来,有些却不行,简直无法使用。自从印度人接管以后,这个曾经的巨头居然沦落如斯。

参考文章:
未能加载文件或程序集“System.Net.Http


事实证明,还是要改成4.0.0.0。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值