无法加载文件或程序集"System.Net.Http.Formatting"或其依赖项之一.该系统找不到指定的路径

Nor*_*ris 147 .net c# asp.net asp.net-mvc-4

我有一个小的MVC应用程序,我出于练习的原因使用,但现在我每次尝试调试时都遇到错误:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

我用Google搜索但无法找到解决方案.我正在使用.NET 4.5.

它不能是DLL文件,因为我使用.Net 4.5.

Jor*_*ers 173

每当我遇到像这样的NuGet错误时,我通常会采取以下步骤:

  1. 转到Windows资源管理器中的packages文件夹并将其删除.
  2. 打开Visual Studio并转到工具 > 库包管理器 > 包管理器设置,在左侧的包管理器项下面有一个"清除包缓存"按钮.单击此按钮并确保选中"允许NuGet在构建期间下载缺少的包"复选框.
  3. 清洁解决方案
  4. 然后在解决方案资源管理器中右键单击解决方案并启用NuGet包还原
  5. 构建解决方案

采取所有这些步骤几乎总是恢复我的MVC程序所需的所有包和dll.


编辑>>>

对于Visual Studio 2013及更高版本,步骤2)应为:

  1. 打开Visual Studio并转到工具 > 选项 > NuGet包管理器,在右侧有一个"清除包缓存按钮".单击此按钮并确保选中"允许NuGet下载丢失的软件包"和"在Visual Studio中构建期间自动检查缺少的软件包"复选框.

  • 我还没有在VS2015中找到"清除"按钮. (18认同)
  • 很好的建议,但它没有解决我的问题"无法加载文件或程序集'System.Net.Http.Formatting'或其依赖项之一.系统找不到指定的路径".对我来说,我必须转到Tools/NuGet包管理器/包管理器控制台,然后"Update-Package -ProjectName MyProject -reinstall".一切都固定了! (9认同)
  • 这工作......解决了问题......谢谢Jordan_Walters ......我没有足够的众议员投票......否则你的帮助非常感谢 (7认同)
  • @YuraZaletskyy我认为它在$ {SolutionDir}/packages /中.即根解决方案文件夹. (3认同)
  • 很好的建议,谢谢,他们真的帮助了我。我希望您不介意我添加了一些进一步的信息来反映 Visual Studio 的更高版本。 (2认同)
  • 我按照上面的步骤操作,但错误仍然存​​在 - 我手动查看了 dll 版本,当我检查 web.config 文件时,有重复的条目,只需留下一个条目来匹配您的 dll 版本,一切都应该有效 - 它对我有用 (2认同)

小智 156

  • 删除所有代码引用 System.Net.*

  • 在包窗口中,

    Install-Package Microsoft.AspNet.WebApi.Client

  • 清理并重建您的项目

  • 这比接受的答案容易得多. (6认同)
  • 我刚遇到这个问题,我安装了最新的NuGet软件包版本的Microsoft.AspNet.WebApi.Client,然后我在我的参考列表中看到了System.Net.Http.Formatting. (2认同)
  • 在我将“System.Net.Http.Formatting”和“System.Web.Http”的“Web.Config”“bindingRedirect”更新为通过上述命令安装的新解决方案后,该解决方案起作用了...即它从“ <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>` 改为 `<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>` (2认同)

rea*_*lPT 23

我发现了一个额外的

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

在我的web.config中.删除它以使其工作.我安装的其他一些包,然后删除导致问题.


lon*_*und 17

user3919888指出了我正确的方向,但我需要Update-Package -reinstall Microsoft.AspNet.WebApi.Client在Package-Manager控制台中运行.基本安装本身无法识别问题但确实已识别该软件包已安装且未覆盖它.

我发布这个答案是因为这种情况很少发生,所以在我记得上次做的事情之前,我最终用Google搜索并到达此页面.


Mah*_*vej 13

删除以下行web.config解决了我的问题.请注意,在此项目中,我没有使用WebApi组件.因此,对于其他人来说,这种解决方

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)


San*_*eep 6

  1. 删除对System.Net的所有代码引用.*
  2. 卸载:打包Microsoft.AspNet.WebApi及其依赖项.
  3. 全部重新安装:打包Microsoft.AspNet.WebApi及其依赖项.
  4. 清理并重建您的项目


Cul*_*tes 6

对于将.NET Standard项目与.NET Framework项目结合使用的用户:

以.NET Standard项目的方式,.NET Standard项目中包含的软件包将在其他.NET Core和.NET Standard项目中正确使用。

以.NET Framework方式,如果要从.NET Framework(MVC)项目引用.NET Standard项目,则需要手动下载并安装相同的nuget包。

因此,对于我的问题的答案是,我必须Microsoft.AspNet.WebApi.ClientMicrosoft.AspNet.WebApi.Client需要使用.NET Standard项目的Web项目(.NET Framework)中下载并安装。实际上,我已经安装了该软件,但是存在版本差异。

我只是添加此答案供其他人查看,它可能不会直接回答OP的问题,但是通过先检查此问题而不是进行投票最多的答案,确实为我节省了时间。


bbo*_*ler 5

正如GeoMac在评论中最初提出的并记录在NuGet的文档中时,如果其他答案都不起作用,以下内容对我有用:

Tools/NuGet包管理器/包管理器控制台

Update-Package -ProjectName MyProjectName -reinstall
Run Code Online (Sandbox Code Playgroud)