.NET Standard更新后System.Net.Http程序集引用不匹配问题求助
解决System.Net.Http程序集加载不匹配的问题
这个问题在.NET Framework项目引入.NET Standard类库时特别常见,主要是因为System.Net.Http在不同框架环境下的版本管理容易出现冲突。结合你的配置信息,给你几个针对性的解决步骤:
1. 修正Web.config中的绑定重定向
首先检查你的Web.config里的System.Net.Http绑定重定向是否和NuGet包版本(4.3.3)一致。很多时候项目自动生成的重定向版本会和实际安装的包不匹配,导致清单定义冲突。你需要确保配置是这样的:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <!-- 其他绑定重定向 --> <dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.3.3.0" /> </dependentAssembly> </assemblyBinding> </runtime>
这里newVersion要严格对应你package.config里的4.3.3版本,oldVersion覆盖到可能存在的旧版本范围。
2. 避免程序集引用冲突
有时候项目会同时引用GAC(全局程序集缓存)里的System.Net.Http和NuGet安装的版本,这会导致加载混乱:
- 右键你的Web项目 → 管理NuGet程序包,确认
System.Net.Http确实是4.3.3版本且已正确安装; - 转到项目的“引用”节点,找到System.Net.Http:
- 如果它的“路径”指向系统目录(比如
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Net.Http.dll),说明你引用了系统自带的版本,需要移除它,只保留NuGet安装的引用; - 如果是NuGet引用,确保它的“复制本地”属性设置为
True,这样编译时会把正确版本的dll复制到输出目录。
- 如果它的“路径”指向系统目录(比如
3. 清理并重新生成项目
缓存的旧程序集也可能导致问题,按以下步骤操作:
- 右键解决方案 → 清理解决方案;
- 手动删除项目根目录下的
bin和obj文件夹; - 重新生成整个解决方案。
完成这些步骤后,应该就能解决程序集清单不匹配的问题了。
内容的提问来源于stack exchange,提问作者Benjamin E.
相关产品推荐
相关产品推荐

