我将Net Framework 4 dll移植到Net Core。 移植我的单元测试项目时,我得到一个运行某些特定测试的异常(不是全部)。
System.IO.FileLoadException:无法加载文件或程序集&System; Net.Net.Http,Version = 4.1.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
这是我的dll的project.json
export PATH=/opt/glassfish4/bin:$PATH
这是单元测试项目的Packages.config
{
"version": "1.0.0-*",
"dependencies": {
"log4net": "2.0.7",
"NETStandard.Library": "1.6.1",
"Newtonsoft.Json": "9.0.1",
"StackExchange.Redis": "1.2.1"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
答案 0 :(得分:32)
通过将System.Net.Http更新为4.3.1
来解决此问题答案 1 :(得分:20)
我遇到了这个问题,并意识到这是因为我有两个不同的引用。 一个引用来自我的项目库,第二个引用是.Net标准库的依赖项,因此是一个Nuget包。 要解决的步骤如下:
System.Net.Http
的引用(project => add reference =>删除引用)。Update-Package –reinstall System.Net.Http
以恢复参考。现在再次运作。 :)
答案 2 :(得分:3)
我的问题是我的服务有一个引用的程序集,它引用了较新版本的System.Net.Http。 我通过更新服务中的System.Net.Http解决了这个问题。
答案 3 :(得分:2)
我在 .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 部分就成功了。
答案 4 :(得分:1)
我有这个问题,而我有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个项目时的问题。
答案 5 :(得分:1)
我同意让。删除对程序集的引用,然后通过Nuget添加新的引用!实际的System.Net.Http版本并不重要。 删除对程序集的引用后,一切正常,版本4.3.2
答案 6 :(得分:1)
解决此问题的最佳和最简便的方法是使用绑定重定向。
只需将oldVersion指定为0.0.0.0-5.0.0.0,将newVersion指定为4.1.1.0
例如,您的版本是4.1.1.0。
答案 7 :(得分:1)
现在是初级程序员解决方案。...再次检查您是否也在正确的位置进行了Nuwen Package Manager中的Jawen和Jean建议的更新。请记住,您的项目和测试项目可能都有解决方案,因此请仔细检查以更新两组引用。
答案 8 :(得分:1)
转到app.config并删除所有引用System.Net.Http的行。
答案 9 :(得分:0)
也许是无用的,但是我的问题是Azure不支持最新的.NET Framework。
答案 10 :(得分:0)