【问题标题】:Unit tests failing with 'Could not load file or assembly 'System.Net.Http, Version=4.1.1.0'单元测试因“无法加载文件或程序集‘System.Net.Http, Version=4.1.1.0’而失败
【发布时间】:2017-05-26 18:54:06
【问题描述】:

我搜索并找到了类似的问题,但给出的答案对我不起作用。

这是特定于 .NET Core 的。我正在用 Xunit 和 Moq 编写单元测试,我得到了

的错误

抛出异常:'System.IO.FileNotFoundException'

附加信息:无法加载文件或程序集 'System.Net.Http,版本=4.1.1.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。这 系统找不到指定的文件。

我的测试项目的 project.json 文件如下所示:

{
   "version": "1.0.0",
   "buildOptions": {
      "debugType": "portable"
   },
   "dependencies": {
      "xunit": "2.2.0-beta2-build3300",
      "dotnet-test-xunit": "2.2.0-preview2-build1029",
      "My.App.DataAccess": "1.0.0",
      "My.App.Domain": "1.0.0",
      "My.App.Services": "1.0.0",
      "My.App.WebApi": "1.0.0",
      "Microsoft.AspNetCore.TestHost": "1.1.0",
      "Moq": "4.5.30"
   },
   "testRunner": "xunit",

   "frameworks": {
      "net462": {}
   }
}

只有单元测试失败。主应用程序工作得很好。我尝试手动强制 System.Net 进入 project.json,但它坚持安装 4.3.0。我不确定它在哪里认为它需要 4.1.1.0。

编辑:我注意到如果我将 System.Net.Http.dll 从 WebApi 项目 bin 复制到 Test 项目 bin,一切正常。现在,测试项目本身不使用 System.Net.Http 命名空间中的任何内容——只有 WebApi 项目中正在测试的方法引用它。

Test 项目是否也应该将 System.Net.Http.dll 复制到它的 bin 文件夹中?如果是这样,为什么在构建过程中没有发生这种情况?

【问题讨论】:

  • 在包还原过程中是否收到任何警告?
  • 不。一切看起来都很笨拙。
  • 您可以按照question 中的说明检查程序集绑定日志,以了解您的应用为何需要此特定版本

标签: unit-testing asp.net-core moq xunit


【解决方案1】:

这大概和这个有关:https://github.com/dotnet/corefx/issues/9846

我建议更新到 VS 2017 并为 System.Net.Http 程序集执行绑定重定向。

【讨论】:

  • 我们如何在新的 csproj 结构中进行绑定重定向?我在互联网搜索中没有得到任何点击。
猜你喜欢
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多