无法加载文件或程序集System.Net.Http版本4.1.1.0

Jaw*_*wen 34 .net c# porting .net-framework-version .net-core

我正在将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

 {
  "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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是单元测试项目的Packages.config

<packages>
  <package id="Castle.Core" version="4.0.0" targetFramework="net462" />
  <package id="log4net" version="2.0.7" targetFramework="net462" />
  <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="Moq" version="4.7.1" targetFramework="net462" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
  <package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
  <package id="System.IO" version="4.1.0" targetFramework="net462" />
  <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Watcher" version="4.0.0" targetFramework="net462" />
  <package id="System.Linq" version="4.1.0" targetFramework="net462" />
  <package id="System.Net.Http" version="4.1.1" targetFramework="net462" />
  <package id="System.Net.NameResolution" version="4.0.0" targetFramework="net462" />
  <package id="System.Runtime" version="4.1.0" targetFramework="net462" />
  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net462" />
  <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net462" />
  <package id="System.Threading.Thread" version="4.0.0" targetFramework="net462" />
</packages>
Run Code Online (Sandbox Code Playgroud)

Jaw*_*wen 35

通过将System.Net.Http更新为4.3.1来修复它

  • 从哪里删除? (2认同)
  • 通过Nuget更新(搜索"http") (2认同)
  • 我努力更新dll。最终,我找到了解决方法:从解决方案资源管理器中的引用中删除当前dll。然后右键单击“引用”,然后选择“管理NuGet包”。在搜索区域中输入:http。请注意有Microsoft.Net.Http和System.Net.Http。选择System.Net.Http。选择它后,您会在右侧面板中看到dll的版本。祝好运!! (2认同)

Jea*_*ean 22

我得到了这个问题,并意识到这是因为我有两个不同的引用.一个引用来自我的项目库,第二个引用是.Net标准库的依赖项,因此是一个Nuget包.要解决的步骤如下:

  • 删除对System.Net.Http(project => add reference =>删除引用)的引用.
  • 保留System.Net和System.Net.Http Nuget包
  • 运行Update-Package –reinstall System.Net.Http以返回引用.

现在再次运作.:)

  • 我遇到了这个问题,这为我解决了!删除了引用并从控制台重新安装了 nuget 包。谢谢! (2认同)

Shi*_*roy 10

转到 app.config 并删除所有引用 System.Net.Http 的行。


Gri*_*uev 5

我的问题是我的服务有一个引用的程序集,该程序集引用了较新版本的 System.Net.Http。我已通过更新服务中的 System.Net.Http 解决了该问题。