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


158

我出于实践原因使用了一个小型MVC应用程序,但是现在每次尝试调试时都会遇到错误:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.

我已经用Google搜索,但是找不到解决方案。我正在使用.NET 4.5。

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



我尝试了一下,但没有成功...而是在程序包管理器上收到一条错误消息,提示“ NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand”
Norris

Answers:


185

每当遇到诸如此类的NuGet错误时,我通常都会采取以下步骤:

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

采取所有这些步骤几乎总是会还原我的MVC程序所需的所有软件包和dll。


编辑>>>

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

  1. 打开Visual Studio并转到“ 工具” >“ 选项” >“ NuGet程序包管理器”,在右侧有一个““清除程序包缓存”按钮”。单击此按钮,并确保选中了“允许NuGet下载缺少的软件包”和“在Visual Studio中生成过程中自动检查缺少的软件包”的复选框。

7
这行得通...解决了这个问题...谢谢Jordan_Walters ...我没有足够的代表来投票...否则,您的帮助将不胜感激
Norris

10
很好的建议,但是它不能解决“无法加载文件或程序集'System.Net.Http.Formatting'或其依赖项之一。系统找不到指定的路径”的问题。对我而言,我必须转到“工具” /“ NuGet程序包管理器” /“程序包管理器控制台”,然后单击“ Update-Package -ProjectName MyProject -reinstall”。一切固定!
GeoMac 2014年

3
@YuraZaletskyy我认为它位于$ {SolutionDir} / packages /中。即根解决方案文件夹。
jakejgordon

1
很棒的提示,谢谢,他们真的帮助了我。希望您不要介意,我添加了一些其他信息来反映更高版本的Visual Studio。
谢里登

1
我按照上面的方法操作,但错误仍然存​​在-我手动查看了dll版本,当我检查我的web.config文件时,存在重复的条目,只留下一个条目以匹配您的dll版本,一切都应该工作了-它为我做了
JazziJeff

168
  • 删除所有对以下代码的引用 System.Net.*

  • 在包裹窗口中

    Install-Package Microsoft.AspNet.WebApi.Client

  • 清理并重建您的项目


2
我只是遇到了这个问题,并安装了Microsoft.AspNet.WebApi.Client的最新NuGet软件包版本,然后在引用列表中看到了System.Net.Http.Formatting。
ewomack '16

我尝试了其他所有方法。这是唯一为我工作的人。
蒂莫西·坎斯基

为我工作。确保安装正确的版本。
CrusherJoe

1
该解决方案的工作我我的更新后Web.Config bindingRedirectSystem.Net.Http.FormattingSystem.Web.Http新的一个通过上面的命令安装...即从去<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"/>
Serj萨根

难道是我们中的许多人仅仅是缺少Microsoft.AspNet.WebApi.Client NuGet包?
carlin.scott

27

我发现了一个额外的

  <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>

在我的web.config中。删除它以使其正常工作。我安装了其他一些软件包,然后将其删除导致此问题。


您如何知道该版本的公共令牌?b03f5f7f11d50a3a
eran otzap

它是由程序包管理器控制台命令自动添加的:Add-BindingRedirect *
Simon Hughes

18

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

我之所以发布此答案,是因为这种情况很少发生,以至于我最终回想起并到达此页面,然后才记得上次的操作。


16

从删除以下行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>

您如何知道该版本的公共令牌?
eran otzap '16

据我所知,它是所有Microsoft dll的公开令牌,无论其版本如何。
Mahmoud Moravej '16

有趣的是,我添加了这些行,并有所帮助。
Krzysztof Madej

那也解决了我的问题。
维沙尔'18

这也解决了我的问题。我已经将一个旧的Web站点项目转换为Web应用程序。Web.config文件引用的版本为5.2.7,而已安装的NuGet软件包的版本为5.2.3。从Web.config中删除此错误可修复此错误。
塞萨尔·丹尼尔

9

对于将.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的问题,但是通过先检查此问题而不是进行投票最多的答案,确实节省了我的时间。


1
我正在使用.NET Core,并在gingter.org/2018/07/26/…上找到了模拟HttpClient的指南。遵循该指南为我提供了OP问题中描述的问题。您的解决方案解决了这个问题:)
ThorkilVærge'19

这对我有用。尝试了推荐的方法,删除并还原了所有软件包,但最后我必须使用Nuget来安装Microsoft.AspNet.WebApi.Client,确保它是我需要的版本,之后一切都很好,
TH Todorov

很好的答案-我开始认为我需要将所有内容移回框架!
d219

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

谢谢!经过两天的绝望尝试,您救了我。这几乎使我发疯。
Marek Dorda

5

正如最初在GeoMac的评论中所建议并在NuGet的文档中记录的那样,当没有其他答案有效时,以下内容对我有用

工具/ NuGet软件包管理器/软件包管理器控制台

Update-Package -ProjectName MyProjectName -reinstall

我有Visual Studio2015。这是我必须要做的,立即修复。
Damian C

3

就我而言,以上解决方案均无效。我通过右键单击参考来解决

System.Net.Http.Formatting

从Visual Studio中并将属性“ 复制本地”设置为true

我希望这是有用的。


2
我做到了,而且仍然会发生
eran otzap

2

对我来说解决这个烦人的错误的原因只是关闭Visual Studio,然后再次打开它。然后重新构建解决方案,然后一切又重新开始。抱歉,我的回答很糟糕,但是我认为这是一个值得的答案,因为它为我解决了。


1
这是所有花对我来说太
史蒂夫Vermeulen的

1

对我来说,就像

  1. 删除 Microsoft.AspNet.WebApi.Client从Windows资源管理器中的程序包文件夹中
  2. 打开工具> NuGet软件包管理器>软件包管理器控制台
  3. 点击“恢复”按钮


1

我面临着同样的问题,因为

System.Net.Http.Formatting

在webconfig中编写的版本为5.0.3,但在bin文件夹中,库System.Net.Http.Formatting dll版本为4.0.2。

所以我只换了bin里面给定的那个

在此处输入图片说明

在此处输入图片说明

只是做这个干净的项目并建立


0

可能需要在属性对话框上将库引用设置为“ Copy Local = True”。在Visual Studio中,单击“引用”,然后右键单击丢失的引用,从上下文菜单中单击属性,您应该会看到复制本地设置。


0

对我来说,在WebApi.config中在行下方添加一些内容是因为更新新的nuget包后无法解决

var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;

不要忘记添加名称空间:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;

请确保通过右键单击解决方案文件来检查项目依赖性,然后在“公共属性”->“项目依赖性”下检查引发错误的项目或检查解决方案所依赖的项目名称
ashish Vicky

0

我为解决这个问题所做的是

  1. 转到NuGet程序包管理器。

  2. 选择更新(从左侧面板)

  3. 更新WebApi组件

  4. 之后,该项目运行无误。


0

VS2019:工具-> Nuget软件包管理器->软件包管理器设置->``软件包还原''部分中的2个选项。之后,转到项目程序包文件夹,并删除其中的所有子文件夹(不再出现任何错误)。


0

我在VS 2019中遇到了ASP.NET项目的问题。

另一个症状是,在项目引用列表(Solution Explorer)中某些引用(System.Web.Http)被标记为错误。

我的解决方案:

  1. 在项目->引用中删除错误的引用(右键单击,...)
  2. 建立
  3. 导航到构建错误“找不到类型或名称空间名称[...]”或类似的错误
  4. 使用“显示潜在的修复程序”->安装软件包

原因:

查看csproj文件中的差异,我可以看到麻烦原因。有人设法在Windows程序文件夹中引用DLL!

<Reference Include="System.Web.Http">
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.