无法加载文件或程序集“系统”。网。哈哈。“格式化”或其依赖项之一。系统找不到指定的路径

我有一个小的 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。

243686 次浏览

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

  1. 进入文件资源管理器中的包文件夹并删除它。
  2. 打开 Visual Studio,转到 工具 > 图书馆软件包管理器 > 包管理器设置,在 Package Manager 项目的左侧有一个“ Clear Package Cache”按钮。单击此按钮并确保选中“允许 NuGet 在构建期间下载丢失的软件包”复选框。
  3. 清洗溶液
  4. 然后在解决方案资源管理器中右键单击解决方案,并启用 NuGet Package Restore
  5. 构建解决方案
  6. 重新启动 VisualStudio

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


编辑 > >

对于 VisualStudio2013及以上版本,步骤2应如下:

  1. 打开 Visual Studio,转到 工具 > 选择 > NuGet 软件包管理器,在右边有一个“ Clear Package Cache 按钮”。单击此按钮,并确保选中“允许 NuGet 下载丢失的包”和“在 Visual Studio 中构建期间自动检查丢失的包”的复选框。
  • 删除对 System.Net.*的所有代码引用

  • 在包裹窗口中,

    Install-Package Microsoft.AspNet.WebApi.Client

  • 清理并重建您的项目

我找到了一个临时演员

  <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 里。为了让它正常工作。一些其他的软件包我安装,然后删除造成的问题。

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>

可能需要在属性对话框中将库引用设置为“ CopyLocal= True”。在可视化工作室单击“引用”,然后右键单击缺少的引用,从上下文菜单单击属性,您应该看到复制本地设置。

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

我发布这个答案是因为这种情况很少发生,以至于在我还没有想起上次我做了什么之前,我就已经在谷歌上搜索并到达了这个页面。

正如 GeoMac最初在评论中所建议的,并在 NuGet 的文件上记录的那样,当其他答案都不起作用时,以下答案对我很有用:

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

Update-Package -ProjectName MyProjectName -reinstall

对我来说,这很简单

  1. 从文件资源管理器的包文件夹中删除 Microsoft.AspNet.WebApi.Client
  2. 打开工具 > NuGet Package Manager > Package Manager Console
  3. 点击“还原”按钮

对我来说,解决这个恼人错误的方法只是关闭 VisualStudio 并再次打开它。然后重建解决方案,一切又重新开始了。很抱歉给了你这个烂答案,但我觉得这个答案值得回答,因为它帮我解决了问题。

在我的案例中,以上的解决方案都不起作用。我通过右键单击参考解决了这个问题

系统

并将属性 收到设置为 没错

希望这个能派上用场。

然而,在我的例子中,以上所有方法都不起作用,用4.0.0替换5.2.3.0确实解决了这个问题。

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

For Me 在 WebApi.config 中添加一些以下代码行可以工作,因为在更新新的 nuget 包之后没有工作

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

不要忘记添加名称空间:

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

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

系统

在 webconfig 中编写的版本是5.0.3,但在 bin 文件夹中的库系统。网。哈哈。格式化 dll 的版本是4.0

所以我就用垃圾桶里给的那个东西代替了

enter image description here

enter image description here

只要做这个干净的项目和建设

我解决这个问题的方法是

  1. 转到 NuGet 软件包管理器。

  2. 选择 Update (从左侧面板)

  3. 更新 WebApi 组件

  4. 之后,项目运行没有错误。

对于那些将 .NET 标准项目与 .NET 框架项目结合使用的项目:

在。NET 标准方式,包含在。NET 标准项目将正确地跨其他。NET 核心及。NET 标准项目。

我是。NET 框架方式,如果您引用的是。NET 标准项目。NET 框架(MVC)项目,您需要手动下载和安装相同的核心软件包。

因此,我的问题的答案是,我必须下载和安装 Microsoft.AspNet.WebApi.Client在网络项目(。NET 框架) ,该框架使用。NET 标准项目,其中需要 Microsoft.AspNet.WebApi.Client。事实上,我已经安装了这个,但是版本不同。

我只是把这个答案添加给其他人看,它可能不会直接回答 OP 的问题,但它确实节省了我的时间,首先检查这一点,而不是做投票最多的答案。

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

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

另一个症状是,某些引用(System.Web.Http)在项目引用列表(解决方案资源管理器)中被标记为错误

我的解决办法是:

  1. 删除 Project-> References 中的错误引用(右键单击,...)
  2. 建造
  3. 导航到“无法找到类型或命名空间名称[ ... ]”或类似的生成错误
  4. 使用“显示潜在修复程序”-> 安装包

原因:

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

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

对我来说,这个问题是由于在 Web.config (System)中缺少一个程序集绑定条目造成的。网。哈哈。格式)。AspNet.WebApi.客户套餐。

我检查了 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 版本,更改绑定重定向中的版本。

检查您的版本是否匹配—— > web.config 文件和 —— > 微软. AspNet. WebApi. 客户端,微软. AspNet. WebApi 如果没有请相应地更新