[英]Could not load file or assembly 'System.Net.Http, Version=4.2.0.0 The system cannot find the file specified
[英]Could not load file or assembly System.Net.Http version 4.1.1.0
我正在将 Net Framework 4 dll 移植到 Net Core。 在移植我的单元测试项目时,运行一些特定测试(不是全部)时出现异常。
System.IO.FileLoadException:无法加载文件或程序集“System.Net.Http,Version=4.1.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)
这是我的 dll 的 project.json
这是单元测试项目的 Packages.config
通过将 System.Net.Http 更新到 4.3.1 来修复它
我得到了这个问题,并意识到这是因为我有两个不同的参考。 一个参考来自我的项目库,第二个是 .Net Standard 库的依赖项,因此是 Nuget 包。 解决步骤如下:
System.Net.Http
的引用(项目 => 添加引用 => 删除引用)。Update-Package –reinstall System.Net.Http
以恢复引用。现在它又工作了。 :)
转到 app.config 并删除所有引用 System.Net.Http 的行。
我的问题是我的服务有一个引用程序集,该程序集引用了较新版本的 System.Net.Http。 我已经通过更新服务中的 System.Net.Http 解决了这个问题。
解决此问题的最佳和最简单的方法是使用绑定重定向。
只需将旧版本指定为 0.0.0.0-5.0.0.0,将新版本指定为 4.1.1.0
例如,4.1.1.0 是您的版本。
我遇到了这个问题,而我有 10 个相互依赖的项目。 我通过在依赖的项目之一中添加它要求的版本来解决这个问题。 编译不需要它,但似乎添加它,在恢复时修复了其他项目中的版本。 所以它是:
无法加载文件或程序集“System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。 该系统找不到指定的文件。
然后:
无法加载文件或程序集“System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。 该系统找不到指定的文件。
所以我在一个项目中添加了“System.Net.Http”:“4.1.1”。
这实际上解决了问题,同时恢复了 8 个项目。
现在初级程序员解决方案......仔细检查您是否也在正确的位置进行了 Nuget Package Manager 中 Jawen 和 Jean 建议的更新。 请记住,您的项目和测试项目可能有一个解决方案,因此请仔细检查以更新两组参考。
我在.NET Framework 4.8 项目中引用 System.Net.Http 版本 4.2.0.0 时遇到了同样的问题。
仔细阅读异常信息,我注意到有一个名为“FusionLog”的条目。
它指出在我的 App.config 文件中 System.Http.Net 的绑定中存在版本重定向。
在 App.config 中,我发现了一个 XML 部分,例如:
<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.1.1.0" newVersion="4.1.1.0"/> </dependentAssembly> </assemblyBinding> </runtime>
删除整个 assemblyBinding 部分就成功了。
我同意让。 删除对程序集的引用,然后通过Nuget添加新的引用! 实际的System.Net.Http版本无关紧要。 删除对程序集的引用后,一切正常,版本4.3.2
这个问题真的让我抓狂! 自从它第一次被报道以来已经有好几年了,但似乎它从来没有成功过。 我最近在 Visual Studio 2022 中开发解决方案时遇到了这个问题。
好消息是,Githut 线程中提到的解决方法确实有效。 有关更多背景信息,这是一个很好的起点:["Could not load System.Net.Http, Version=4.xyz"][1]
解决方案非常简单,您需要做的就是添加绑定重定向。 几个警告:
<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Net.Http" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" \/> <bindingRedirect oldVersion="0.0.0.0-4.6.26011.1" newVersion="4.2.0.0" \/> <\/dependentAssembly> <\/runtime> <\/configuration><\/code><\/pre>
<\/li>
<RestoreProjectStyle>PackageReference<\/RestoreProjectStyle> <AutoGenerateBindingRedirects>true<\/AutoGenerateBindingRedirects><\/code><\/pre>
[1]: https<\/a> :\/\/github.com\/dotnet\/standard\/issues\/891<\/li><\/ul>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.