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

时间:2014-03-14 11:24:11

标签: c# asp.net .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.

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

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

20 个答案:

答案 0 :(得分:161)

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

  1. 转到Windows资源管理器中的packages文件夹并将其删除。
  2. 打开Visual Studio并转到工具> 图书馆资料包经理> 软件包管理器设置,在左侧的软件包管理器项下,有一个" Clear Package Cache"按钮。单击此按钮,确保"允许NuGet在构建期间下载缺少的包的复选框"检查。
  3. 清洁解决方案
  4. 然后右键单击解决方案资源管理器中的解决方案并启用NuGet Package Restore
  5. 构建解决方案
  6. 采取所有这些步骤几乎总能恢复我的MVC计划所需的所有软件包和dll。


    编辑>>>

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

    1. 打开Visual Studio并转到工具> 选项> NuGet Package Manager ,右侧有一个" Clear Package Cache按钮"。单击此按钮,确保"允许NuGet下载缺少的包"的复选框。和#34;在Visual Studio中构建期间自动检查缺少的包"检查。

答案 1 :(得分:139)

  • 删除对System.Net.*

  • 的所有代码引用 包裹窗口中的
  • Install-Package Microsoft.AspNet.WebApi.Client

  • 清理并重建项目

答案 2 :(得分:22)

我发现了一个额外的

  <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中。删除它以使其工作。我安装的其他一些软件包,然后删除导致了这个问题。

答案 3 :(得分:15)

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

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

答案 4 :(得分: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>

答案 5 :(得分:6)

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

答案 6 :(得分:5)

最初在GeoMac的评论中提出并记录在NuGet's docs上,当其他答案都没有起作用时,以下内容对我有用:

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

Update-Package -ProjectName MyProjectName -reinstall

答案 7 :(得分:3)

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

解决了这个问题
  

System.Net.Http.Formatting

从Visual Studio中

并将属性将本地复制设置为 true

我希望这在某种程度上有用。

答案 8 :(得分:3)

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

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

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

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

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

答案 9 :(得分:1)

对我而言,它就像

一样简单
  1. 从Windows资源管理器中的packages文件夹中删除Microsoft.AspNet.WebApi.Client
  2. 打开工具&gt; NuGet包管理器&gt;包管理器控制台
  3. 点击“恢复”按钮

答案 10 :(得分:1)

为我解决这个烦人的错误只是关闭Visual Studio并再次打开它。然后重建解决方案,这一切都再次起作用。很抱歉垃圾回答,但我认为它值得一个答案,因为它为我解决了。

答案 11 :(得分:1)

对我来说,这个问题是由于添加 Microsoft.AspNet.WebApi.Client 包后在 Web.config (System.Net.Http.Formatting) 中缺少程序集绑定条目引起的。

我检查了我拥有的 Microsoft.AspNet.WebApi.Client 版本,并将以下绑定添加到 Web.config:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
  </dependentAssembly>

根据您拥有的 WebApi.Client 版本,更改绑定重定向中的版本。

答案 12 :(得分:1)

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

  

System.Net.Http.Formatting

在Webconfig中编写的

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

所以我只替换了bin中给定的那个

enter image description here

enter image description here

只需完成这个干净的项目并构建

答案 13 :(得分:0)

检查您的版本是否与 --> web.config 文件和 --> Microsoft.AspNet.WebApi.Client,Microsoft.AspNet.WebApi 如果没有请更新

答案 14 :(得分:0)

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

另一个症状是,在项目引用列表(解决方案资源管理器)中某些引用(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>

答案 15 :(得分:0)

VS2019:工具-> Nuget软件包管理器->软件包管理器设置->在“软件包还原”部分,选中2个选项。 之后,转到项目包文件夹并删除其中的所有子文件夹(不再出现任何错误) 然后重新构建解决方案,Nuget将重新下载所有软件包,并且项目应在没有任何参考的情况下运行。

答案 16 :(得分:0)

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

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

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

  3. 更新WebApi组件

  4. 此后,项目运行无误。

答案 17 :(得分: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;

答案 18 :(得分:0)

就我而言,上述情况都没有,但用5.0.0.0替换5.2.3.0确实解决了这个问题。

答案 19 :(得分:0)

可能需要在属性对话框中将库引用设置为“Copy Local = True”。在visual studio上单击“references”,然后右键单击缺少的引用,从上下文菜单中单击属性,您应该看到copy local settings。