Não foi possível carregar o arquivo ou assembly 'System.Net.Http.Formatting' ou uma de suas dependências. O sistema não consegue encontrar o caminho especificado

158

Eu tenho um aplicativo MVC pequeno que uso por motivos de prática, mas agora encontro um erro toda vez que tento depurar:

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

Pesquisei no Google, mas não consigo encontrar uma solução. Estou usando o .NET 4.5.

Não pode ser o arquivo DLL porque estou usando o .Net 4.5.

Norris
fonte
1
veja dependência aqui .. nuget.org/packages/System.Net.Http.Formatting
Vishal Sharma
Eu tentei isso e não funcionou ... Em vez disso, recebo um erro no Gerenciador de Pacotes dizendo 'NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand'
Norris

Respostas:

185

Sempre que tenho um erro do NuGet como esses, geralmente tomo as seguintes medidas:

  1. Vá para a pasta packages no Windows Explorer e exclua-a.
  2. Abra o Visual Studio e vá para Ferramentas > Gerenciador de Pacotes da Biblioteca > Configurações do Gerenciador de Pacotes e, no item Gerenciador de Pacotes, no lado esquerdo, há um botão "Limpar Cache do Pacote". Clique neste botão e verifique se a caixa de seleção "Permitir que o NuGet baixe pacotes ausentes durante a compilação" está marcada.
  3. Limpe a solução
  4. Em seguida, clique com o botão direito do mouse na solução no Solution Explorer e ative o NuGet Package Restore
  5. Crie a solução
  6. Reinicie o Visual Studio

A realização de todas essas etapas quase sempre restaura todos os pacotes e dlls necessários para o meu programa MVC.


EDIT >>>

Para o Visual Studio 2013 e superior, a etapa 2) deve ler:

  1. Abra o Visual Studio e vá em Ferramentas > Opções > NuGet Package Manager e no lado direito há um "botão Limpar cache de pacote". Clique neste botão e verifique se as caixas de seleção "Permitir que o NuGet baixe pacotes ausentes" e "Verificar automaticamente a falta de pacotes durante a compilação no Visual Studio" estão marcadas.
Jordan_Walters
fonte
7
Isso funcionou ... Resolvido a reconstrução da casa Jordan_Walters problema ... Obrigado ... Eu não tenho o suficiente Rep votar-se ... caso contrário, sua ajuda foi muito apreciado
Norris
10
Um bom conselho, mas não corrigiu meu problema com "Não foi possível carregar o arquivo ou assembly 'System.Net.Http.Formatting' ou uma de suas dependências. O sistema não consegue encontrar o caminho especificado". Para mim, eu tive que ir em Ferramentas / Gerenciador de Pacotes NuGet / Console do Gerenciador de Pacotes e depois em "Update-Package -ProjectName MyProject - reinstall". Tudo consertado!
GeoMac 15/08/14
3
@YuraZaletskyy Acho que está em $ {SolutionDir} / packages /. Ou seja, a pasta da solução raiz.
jakejgordon
1
Ótimas dicas, obrigado, elas realmente me ajudaram. Espero que você não se importe de ter adicionado mais informações para refletir versões posteriores do Visual Studio.
Sheridan
1
Eu segui o acima e ainda assim o erro permaneceu - eu olhei manualmente para a versão dll e quando verifiquei meu arquivo web.config havia entradas duplicadas, basta deixar uma única entrada para corresponder à sua versão dll e tudo deve funcionar - funcionou para mim
JazziJeff
168
  • Remova todas as referências de código para System.Net.*

  • na janela do pacote,

    Install-Package Microsoft.AspNet.WebApi.Client

  • Limpe e reconstrua seu projeto

user3919888
fonte
2
Acabei de encontrar esse problema e instalei a versão mais recente do pacote NuGet do Microsoft.AspNet.WebApi.Client e vi System.Net.Http.Formatting na minha lista de referências.
ewomack
Eu tentei de tudo. Este é o único que funcionou para mim.
Timothy Kanski
Trabalhou para mim. Certifique-se de instalar a versão correta.
CrusherJoe
1
Esta solução funcionou depois que eu atualizei o meu Web.Config bindingRedirectpara System.Net.Http.Formattinge System.Web.Httppara o novo instalado pelo comando acima ... ou seja, passou de <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>para<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Sagan
Será que muitos de nós simplesmente não possuíam o pacote Microsoft.AspNet.WebApi.Client NuGet?
carlin.scott 17/03
27

Eu achei um extra

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

no meu web.config. removido isso para fazê-lo funcionar. algum outro pacote que instalei e depois removi causou o problema.

realPT
fonte
como você sabe qual é o token público da versão? b03f5f7f11d50a3a
eran otzap
Sua adicionado automaticamente pelo comando do console gerenciador de pacotes: Add-bindingRedirect *
Simon Hughes
18

user3919888 me apontou na direção certa, mas eu precisava executar Update-Package -reinstall Microsoft.AspNet.WebApi.Clientno console do Package-Manager. A instalação básica por si só não reconhece o problema, mas reconhece que o pacote já está instalado e não o substitui.

Estou postando esta resposta porque isso acontece com pouca frequência e acabo pesquisando e acessando esta página antes de me lembrar do que fiz da última vez.

longestwayround
fonte
16

A remoção das seguintes linhas web.configresolveu o meu problema. Observe que neste projeto eu não usei componentes WebApi. Portanto, para outros, essa solução pode não funcionar como esperado.

  <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>
Mahmoud Moravej
fonte
como você sabe qual é o token público da versão?
precisa saber é o seguinte
Como eu sei, é um token público de todas as dlls da Microsoft, independentemente de sua versão.
Mahmoud Moravej
Para ser engraçado, eu adicionei essas linhas e isso ajudou.
precisa
Isso também resolveu o problema para mim.
Vishal 12/12
Isso resolveu meu problema também. Eu havia convertido um projeto antigo de site em um aplicativo da web. O arquivo Web.config fazia referência à versão 5.2.7, enquanto o pacote NuGet instalado era 5.2.3. Excluir isso do Web.config corrigiu o erro.
Cesar Daniel
9

Para aqueles que usam o projeto .NET Standard em combinação com projetos do .NET Framework :

Da maneira .NET Standard, os pacotes incluídos em um projeto .NET Standard serão usados ​​corretamente em outros projetos .NET Core e .NET Standard.

Na maneira do .NET Framework, se você estiver se referindo a um projeto .NET Standard de um projeto .NET Framework (MVC), precisará baixar e instalar manualmente os mesmos pacotes de nuget.

Portanto, a resposta para minha pergunta foi que eu tinha que baixar e instalar Microsoft.AspNet.WebApi.Clientno projeto web (.NET Framework) que está usando um projeto .NET Standard onde Microsoft.AspNet.WebApi.Clienté necessário. Na verdade, eu já tinha isso instalado, mas havia uma diferença de versão.

Acabei de adicionar esta resposta para que outras pessoas vejam, ela pode não responder diretamente à pergunta da OP, mas economizou tempo, verificando-a primeiro em vez de fazer as respostas mais votadas.

CularBytes
fonte
1
Estou usando o .NET Core e encontrei um guia para simular o HttpClient em gingter.org/2018/07/26/… . Seguir esse guia me deu o problema descrito na pergunta do OP. E a sua solução corrigiu o problema :) #
Thorkil Værge
Isto é o que funcionou para mim. Tentei a abordagem recomendada, removendo e restaurando todos os pacotes, mas no final tive que usar o Nuget para instalar o Microsoft.AspNet.WebApi.Client, certificando-se de que era a versão que eu precisava e que tudo ficou bem depois disso,
TH Todorov
Ótima resposta - eu estava começando a pensar que precisaria voltar tudo para o Framework!
d219 17/09/19
6
  1. Remova todas as referências de código para System.Net.*
  2. Desinstalar: Package Microsoft.AspNet.WebApie suas dependências.
  3. Reinstale tudo: Pacote Microsoft.AspNet.WebApie suas dependências.
  4. Limpe e reconstrua seu projeto
Sandeep
fonte
Obrigado! Você me salvou após 2 dias de tentativas desesperadas. Isso quase me deixou louco.
Marek Dorda
5

Conforme sugerido originalmente em um comentário do GeoMac e documentado nos documentos do NuGet, o seguinte funcionou para mim quando nenhuma das outras respostas funcionou:

Ferramentas / Gerenciador de Pacotes NuGet / Console do Gerenciador de Pacotes

Update-Package -ProjectName MyProjectName -reinstall
bbodenmiller
fonte
Eu tenho o Visual Studio 2015. Era isso que eu precisava fazer, corrigi-lo instantaneamente.
Damian C
3

No meu caso, nenhuma das soluções acima funcionou. Eu resolvi clicando com o botão direito do mouse na referência

System.Net.Http.Formatting

do Visual studio e definindo a propriedade Copy Local como true .

Espero que isso seja útil de alguma forma.

Hugo Nava Kopp
fonte
2
Eu fiz isso e ainda acontece #
eran otzap
2

O que resolveu esse erro irritante para mim foi apenas fechar o Visual Studio e abri-lo novamente. Em seguida, reconstrua a solução e tudo funcionou novamente. Desculpe a resposta porcaria, mas acho que vale a pena uma resposta porque ela resolveu para mim.

andreasnico
fonte
1
Este foi o suficiente para mim também
Steve Vermeulen
1

Para mim, era tão simples quanto

  1. Excluir Microsoft.AspNet.WebApi.Clientda pasta de pacotes no Windows Explorer
  2. Abra Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes
  3. Clique no botão "Restaurar"
adam0101
fonte
1

No meu caso, nenhuma das opções acima funcionou, no entanto, a substituição do 5.2.3.0 por 4.0.0.0 resolveu o problema.

Sebastián Vansteenkiste
fonte
1

Eu estava enfrentando o mesmo problema porque

System.Net.Http.Formatting

A versão gravada dentro do webconfig era 5.0.3, mas dentro da pasta bin, a biblioteca DLL System.Net.Http.Formatting era 4.0.2.

então eu acabei de substituir pelo mesmo bin dentro

insira a descrição da imagem aqui

insira a descrição da imagem aqui

basta fazer este projeto limpo e construir

TAHA SULTAN TEMURI
fonte
0

Provavelmente, você precisa definir a referência da biblioteca como "Copiar Local = True" na caixa de diálogo de propriedades. No visual studio, clique em "referências" e, em seguida, clique com o botão direito do mouse na referência ausente. No menu de contexto, clique em Propriedades, você verá a configuração local de cópia.

Cortar
fonte
0

Para mim, adicionar algumas linhas abaixo no WebApi.config funciona, pois após a atualização do novo pacote nuget não funcionou

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

Não se esqueça de adicionar espaço para nome:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;
Vicky cinza
fonte
certifique-se de verificar a dependência do projeto pelo clique direito sobre arquivo de solução e, em seguida, sob Properties- comum> dependências do projeto verificar o projeto onde o erro é lançado ou verificar o nome do projeto no qual solução é dependente
ashish Vicky
0

O que eu fiz para resolver esse problema é

  1. Vá para o gerenciador de pacotes do NuGet.

  2. Selecione Atualizações (no painel esquerdo)

  3. Atualizar componentes WebApi

  4. Depois disso, o projeto foi executado sem erros.

Raj
fonte
0

VS2019: Ferramentas -> Gerenciador de Pacotes Nuget -> Configuração do Gerenciador de Pacotes -> na seção Restauração de Pacotes, marque 2 opções. Depois disso, vá para a pasta de pacotes do projeto e exclua todas as pastas filho dentro (para não haver mais erros). Em seguida, Reconstrua a solução, o Nuget fará o download novamente de todos os pacotes e o projeto deverá ser executado sem nenhuma referência.

grandholy
fonte
0

Eu tive o problema com um projeto ASP.NET no VS 2019.

Outro sintoma foi que algumas referências (System.Web.Http) foram marcadas como defeituosas na lista de referências do projeto (Solution Explorer)

Minha solução:

  1. Exclua as referências defeituosas em Projeto -> Referências (clique com o botão direito do mouse, ...)
  2. Construir
  3. Navegue até os erros de construção "O tipo ou nome do espaço para nome [...] não foi encontrado" ou similar
  4. Use o "Mostrar possíveis correções" -> Instalar o pacote

A causa:

Observando a diferença no arquivo csproj, pude ver o motivo do problema. Alguém conseguiu fazer referência a uma DLL na pasta de arquivos do programa 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>
Daniel Hillebrand
fonte