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

C# 无法加载文件或程序集';System.Net.Http.Formatting';或者它的一个依赖项。系统找不到指定的路径,c#,asp.net,.net,asp.net-mvc-4,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. 我在谷歌上搜索过,但找不到解决办法。我正在使用.NET4.5 它不能是DLL文件,因为我使用的是.Net 4.5。每当我出现如下NuGet错误时,我通常会采取

我有一个用于实践的小型MVC应用程序,但现在每次尝试调试时都会遇到错误:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.
我在谷歌上搜索过,但找不到解决办法。我正在使用.NET4.5


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

每当我出现如下NuGet错误时,我通常会采取以下步骤:

  • 转到Windows资源管理器中的“软件包”文件夹并将其删除
  • 打开Visual Studio并转到工具>库包管理器>包管理器设置,在左侧的包管理器项下有一个“清除包缓存”按钮。单击此按钮并确保选中“允许NuGet在构建期间下载缺少的包”复选框
  • 清洗溶液
  • 然后右键单击解决方案资源管理器中的解决方案并启用NuGet Package Restore
  • 构建解决方案
  • 重新启动Visual Studio
  • 采取所有这些步骤几乎总是恢复MVC程序所需的所有包和dll


    编辑>>>

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

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

    • 在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>
        
        
        
        您可能需要在“属性”对话框中将库引用设置为“Copy Local=True”。在visual studio上单击“引用”,然后右键单击缺少的引用,从关联菜单中单击“属性”,您应该会看到“复制本地设置”。

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


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

        正如我在一篇评论中最初所建议的那样,并记录在以下内容中,当其他答案都不起作用时,我的做法对我有效:

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

        Update-Package -ProjectName MyProjectName -reinstall
        

        对我来说,这很简单

      • 从Windows资源管理器中的packages文件夹中删除Microsoft.AspNet.WebApi.Client
      • 打开工具>NuGet软件包管理器>软件包管理器控制台
      • 单击“还原”按钮

      • 对我来说,解决这个恼人错误的方法就是关闭VisualStudio并再次打开它。然后重新构建解决方案,一切又重新开始。很抱歉这个糟糕的答案,但我认为它值得一个答案,因为它为我解决了这个问题

        在我的情况下,上述解决方案都不起作用。我通过右键单击引用解决了这个问题

        System.Net.Http.xml格式

        从Visual studio中,将属性复制本地设置为


        我希望这是有用的

        在我的例子中,上述所有方法都不起作用,但是,用4.0.0.0替换5.2.3.0确实解决了问题

      • 删除对
        System.Net.*
      • 卸载:包
        Microsoft.AspNet.WebApi
        及其依赖项
      • 全部重新安装:包
        Microsoft.AspNet.WebApi
        及其依赖项
      • 清理并重建项目

      • 对我来说,在WebApi.config中添加几行代码是可行的,因为在更新新的nuget包之后并没有成功

        var setting = config.Formatters.JsonFormatter.SerializerSettings;
        setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
        setting.Formatting = Formatting.Indented;
        
        不要忘记添加命名空间:

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

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

        System.Net.Http.xml格式

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

        所以我只是换成了同样的垃圾桶


        只要做这个干净的项目并构建

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

      • 转到NuGet软件包管理器

      • 选择更新(从左侧面板)

      • 更新WebApi组件

      • 之后,项目运行时没有出现错误


      • 对于那些结合使用.NET Standard项目和.NET Framework项目的用户:

        以.NET标准方式,.NET标准项目中包含的包将正确地用于其他.NET核心和.NET标准项目

        在.NET Framework方式下,如果您引用的是.NET Framework(MVC)项目中的.NET标准项目,则需要手动下载并安装相同的nuget软件包

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

        我只是添加了这个答案让其他人看,它可能不会直接回答OP的问题,但它确实节省了我的时间,首先检查这个,而不是做顶部-
        <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>