问题描述:
共享库" shared.dll"项目引用System.Net.Http NuGet包4.3.0。引用" shared.dll"的应用程序失败了
System.IO.FileLoadException
无法加载文件或程序集“System.Diagnostics.DiagnosticSource,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
at System.Net.Http.WinHttpHandler.SendAsync(...)
在调查此问题后,我们针对上述失败找到了以下原因:
有几种解决方法:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> </dependentAssembly> </assemblyBinding>
虽然正确的问题解决方案在于修复上述NuGet软件包的不一致性,但有一种唠叨的感觉。在源处修复时,不需要使用System.Net.Http包的消耗代码。
问题:
感谢。
答案 0 :(得分:9)
我解决了从NuGet安装System.Net.Http(版本4.3.1)的问题。
答案 1 :(得分:4)
我觉得回答我自己的问题是事实上正确的,因为99%的答案已经存在。
github / corefx的开发团队承认this issue解决方案将是另一个known issue修复的副作用,因为从System.Net中删除对System.Diagnostics.DiagnosticSource.dll的硬引用的性质.Http项目。
在此之前:根据个人喜好,可以使用两种提供的解决方法中的任何一种。
答案 2 :(得分:0)
就我而言
FileLoadException:无法加载文件或汇编 &#39; System.Diagnostics.DiagnosticSource,Version = 4.0.3.0, Culture = neutral,Public KeyToken = cc7b13ffcd2ddd51&#39;。位于 程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
什么时候开始向Asp.Net Core 2.0项目添加了Microsoft.AspNetCore.TestHost包&#34; 2.1.0-preview2-final&#34;。 解决方法是安装稳定版本&#34; 2.0.2&#34;