No se pudo cargar el archivo o ensamblado 'System.Net.Http.Formatting' o una de sus dependencias. El sistema no puede encontrar la ruta especificada

158

Tengo una pequeña aplicación MVC que uso por razones de práctica, pero ahora me encuentro con un error cada vez que intento depurar:

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

Busqué en Google pero no puedo encontrar una solución. Estoy usando .NET 4.5.

No puede ser el archivo DLL porque estoy usando .Net 4.5.

Norris
fuente
1
ver dependencia aquí .. nuget.org/packages/System.Net.Http.Formatting
Vishal Sharma
Lo intenté y no funcionó ... En cambio, recibo un error en el Administrador de paquetes que dice 'NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand'
Norris

Respuestas:

185

Cada vez que tengo un error NuGet como estos, generalmente sigo estos pasos:

  1. Vaya a la carpeta de paquetes en el Explorador de Windows y elimínelo.
  2. Abra Visual Studio y vaya a Herramientas > Administrador de paquetes de biblioteca > Configuración del Administrador de paquetes y debajo del elemento Administrador de paquetes en el lado izquierdo hay un botón "Borrar caché de paquetes". Haga clic en este botón y asegúrese de que la casilla de verificación "Permitir que NuGet descargue paquetes faltantes durante la compilación" esté marcada.
  3. Limpiar la solución
  4. Luego haga clic con el botón derecho en la solución en el Explorador de soluciones y habilite Restaurar paquete NuGet
  5. Construye la solución
  6. Reiniciar Visual Studio

Tomar todos estos pasos casi siempre restaura todos los paquetes y dll que necesito para mi programa MVC.


EDITAR >>>

Para Visual Studio 2013 y superior, el paso 2) debería leer:

  1. Abra Visual Studio y vaya a Herramientas > Opciones > Administrador de paquetes NuGet y en el lado derecho hay un "botón Borrar caché de paquetes". Haga clic en este botón y asegúrese de que las casillas de verificación "Permitir que NuGet descargue paquetes faltantes" y "Verificar automáticamente los paquetes faltantes durante la compilación en Visual Studio" estén marcados.
Jordan_Walters
fuente
77
Esto funcionó ... Resuelto el problema ... Gracias Jordan_Walters ... No tengo suficiente representante para votar ... de lo contrario, su ayuda fue muy apreciada
Norris
10
Un buen consejo, pero no solucionó mi problema con "No se pudo cargar el archivo o ensamblado 'System.Net.Http.Formatting' o una de sus dependencias. El sistema no puede encontrar la ruta especificada". Para mí tuve que ir a Herramientas / NuGet Package Manager / Package Manager Console y luego "Update-Package -ProjectName MyProject -reinstall". Todo arreglado!
GeoMac
3
@YuraZaletskyy Creo que está en $ {SolutionDir} / packages /. Es decir, la carpeta de la solución raíz.
jakejgordon
1
Grandes consejos, gracias, realmente me ayudaron. Espero que no le importe que agregué más información para reflejar versiones posteriores de Visual Studio.
Sheridan
1
Seguí lo anterior y, sin embargo, el error se mantuvo: miré manualmente la versión dll y cuando revisé mi archivo web.config había entradas duplicadas, solo dejo una sola entrada para que coincida con su versión dll y todo debería funcionar, funcionó para mí
JazziJeff
168
  • Eliminar todas las referencias de código a System.Net.*

  • en la ventana del paquete,

    Install-Package Microsoft.AspNet.WebApi.Client

  • Limpia y reconstruye tu proyecto

usuario3919888
fuente
2
Acabo de encontrarme con este problema e instalé la última versión del paquete NuGet de Microsoft.AspNet.WebApi.Client y luego vi System.Net.Http.Formatting en mi lista de referencias.
ewomack el
Intenté todo lo demás. Este es el único que funcionó para mí.
Timothy Kanski el
Trabajó para mi. Asegúrese de instalar la versión correcta.
CrusherJoe
1
Esta solución funcionó después de que actualicé mi Web.Config bindingRedirectpara System.Net.Http.Formattingy System.Web.Httpel nuevo instalado por el comando anterior ... es decir, pasó de <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>ser<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Sagan
¿Es el caso entonces que a muchos de nosotros simplemente nos faltaba el paquete NuGet de Microsoft.AspNet.WebApi.Client?
carlin.scott
27

Encontré un 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>

en mi web.config. eliminado eso para que funcione. otro paquete que instalé y luego eliminé causó el problema.

realPT
fuente
¿Cómo sabes cuál es el token público de la versión? b03f5f7f11d50a3a
eran otzap
Se agrega automáticamente mediante el comando de consola del administrador de paquetes: Add-BindingRedirect *
Simon Hughes
18

user3919888 me señaló en la dirección correcta, pero necesitaba ejecutar Update-Package -reinstall Microsoft.AspNet.WebApi.Clienten la consola de Package-Manager. La instalación básica por sí sola no reconoce el problema pero reconoce que el paquete ya está instalado y no lo sobrescribe.

Estoy publicando esta respuesta porque esto sucede con tan poca frecuencia que termino buscando en Google y llegando a esta página antes de recordar lo que hice la última vez.

camino mas largo
fuente
16

Eliminar las siguientes líneas de web.configresolvió mi problema. Tenga en cuenta que en este proyecto no utilicé componentes de WebApi. Entonces, para otros, esta solución puede no funcionar como se esperaba.

  <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
fuente
¿Cómo sabes cuál es el token público de la versión?
eran otzap
Como sé, es un token público de todos los dlls de Microsoft, independientemente de su versión.
Mahmoud Moravej
Para ser divertido, agregué estas líneas y me ayudó.
Krzysztof Madej
Eso solucionó el problema para mí también.
Vishal
Esto resolvió mi problema también. Había convertido un antiguo proyecto de sitio web en una aplicación web. El archivo Web.config hacía referencia a la versión 5.2.7, mientras que el paquete NuGet instalado era 5.2.3. Eliminar esto de Web.config corrigió el error.
Cesar Daniel
9

Para aquellos que usan proyectos .NET Standard en combinación con proyectos de .NET Framework :

De la manera .NET Standard, los paquetes que se incluyen en un proyecto .NET Standard se usarán correctamente en otros proyectos .NET Core y .NET Standard.

En la forma de .NET Framework, si se refiere a un proyecto .NET Standard de un proyecto .NET Framework (MVC), debe descargar e instalar manualmente los mismos paquetes nuget.

Entonces, la respuesta a mi pregunta fue que tuve que descargar e instalar Microsoft.AspNet.WebApi.Clienten el proyecto web (.NET Framework) que está usando un proyecto .NET Standard donde Microsoft.AspNet.WebApi.Clientse necesita. De hecho, ya tenía esto instalado pero había una diferencia de versión.

Solo agrego esta respuesta para que otros la vean, puede que no responda directamente la pregunta de OP, pero me ahorró tiempo al verificar esto en lugar de hacer las respuestas más votadas.

CularBytes
fuente
1
Estoy usando .NET Core y encontré una guía para burlarme del HttpClient en gingter.org/2018/07/26/… . Seguir esa guía me dio el problema descrito en la pregunta de OP. Y su solución solucionó el problema :)
Thorkil Værge
Esto es lo que funcionó para mí. Probamos el enfoque recomendado, la eliminación y restauración de todos los paquetes, pero al final tuve que usar Nuget instalar Microsoft.AspNet.WebApi.Client asegurándose de que es la versión que necesitaba y estaba todo bien después de eso,
TH Todorov
Gran respuesta: ¡estaba empezando a pensar que tendría que volver a mover todo al Framework!
d219
6
  1. Eliminar todas las referencias de código a System.Net.*
  2. Desinstalar: paquete Microsoft.AspNet.WebApiy sus dependencias.
  3. Vuelva a instalar todo: Paquete Microsoft.AspNet.WebApiy sus dependencias.
  4. Limpia y reconstruye tu proyecto
Sandeep
fuente
¡Gracias! Me salvaste después de 2 días de intentos desesperados. Casi me volvió loco.
Marek Dorda
5

Como se sugirió originalmente en un comentario de GeoMac y documentado en los documentos de NuGet, lo siguiente funcionó para mí cuando ninguna de las otras respuestas funcionó:

Herramientas / NuGet Package Manager / Package Manager Console

Update-Package -ProjectName MyProjectName -reinstall
bbodenmiller
fuente
Tengo Visual Studio 2015. Esto es lo que tuve que hacer, lo arreglé al instante.
Damian C
3

En mi caso, ninguna de las soluciones anteriores funcionó. Lo resolví haciendo clic derecho en la referencia

System.Net.Http.Formatting

desde Visual Studio y estableciendo la propiedad Copy Local en true .

Espero que esto sea útil de alguna manera.

Hugo Nava Kopp
fuente
2
hice eso y aún sucede
eran otzap
2

Lo que resolvió este molesto error para mí fue cerrar Visual Studio y volver a abrirlo. Luego reconstruya la solución y todo volvió a funcionar. Perdón por la respuesta basura, pero creo que vale la pena una respuesta porque me la resolvió.

andreasnico
fuente
1
Esto fue todo lo que necesitó para mí también
Steve Vermeulen
1

Para mí fue tan simple como

  1. Eliminar Microsoft.AspNet.WebApi.Clientde la carpeta de paquetes en el Explorador de Windows
  2. Abra Herramientas> NuGet Package Manager> Consola de Package Manager
  3. Haga clic en el botón "Restaurar"
adam0101
fuente
1

En mi caso, ninguno de los anteriores funcionó, sin embargo, reemplazar 5.2.3.0 con 4.0.0.0 resolvió el problema.

Sebastián Vansteenkiste
fuente
1

Estaba enfrentando el mismo problema porque

System.Net.Http.Formatting

la versión escrita dentro de webconfig era 5.0.3 pero dentro de la carpeta bin la biblioteca System.Net.Http.Formatting dll versión era 4.0.2

así que acabo de reemplazar con el mismo dado dentro del contenedor

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

solo haz este proyecto limpio y construye

TAHA SULTAN TEMURI
fuente
0

Probablemente necesite configurar la referencia de la biblioteca como "Copiar Local = Verdadero" en el diálogo de propiedades. En Visual Studio, haga clic en "referencias" y luego haga clic con el botón derecho en la referencia que falta, en el menú contextual haga clic en propiedades, debería ver la configuración local de copia.

cortar
fuente
0

Para mí, agregar algunos debajo de la línea en WebApi.config funciona ya que después de actualizar el nuevo paquete nuget no funcionó

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

No olvides agregar espacio de nombres:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;
ashish Vicky
fuente
asegúrese de verificar la dependencia del proyecto haciendo clic con el botón derecho en el archivo de la solución y luego en propiedades
comunes-
0

Lo que hice para resolver este problema es

  1. Vaya al administrador de paquetes NuGet.

  2. Seleccione Actualizaciones (desde el panel izquierdo)

  3. Actualizar componentes de WebApi

  4. Después de eso, el proyecto se ejecutó sin errores.

Raj
fuente
0

VS2019: Herramientas -> Administrador de paquetes Nuget -> Configuración del Administrador de paquetes -> en la sección Restauración de paquetes, marque 2 opciones. Después de eso, vaya a la carpeta de paquetes del proyecto y elimine todas las carpetas secundarias del interior (para que no haya ningún error). Luego, reconstruya la solución, Nuget volverá a descargar todos los paquetes y el proyecto debería ejecutarse sin ninguna referencia.

grandioso
fuente
0

Tuve el problema con un proyecto ASP.NET en VS 2019.

Otro síntoma fue que algunas referencias (System.Web.Http) se marcaron como defectuosas en la lista de referencias del proyecto (Solution Explorer)

Mi solución:

  1. Elimine las referencias defectuosas en Proyecto -> Referencias (clic derecho, ...)
  2. Construir
  3. Vaya a los errores de compilación "No se pudo encontrar el tipo o el nombre [...] del espacio de nombres" o similar
  4. Utilice "Mostrar posibles soluciones" -> Instalar paquete

La causa:

Al observar la diferencia en el archivo csproj, pude ver la razón del problema. ¡Alguien logró hacer referencia a una DLL en la carpeta de archivos del Programa de 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
fuente