Copié mi proyecto en una máquina limpia de Windows 10 con solo Visual Studio 2015 Community y SQL Server 2016 Express instalado. No hay otras versiones de framework instaladas aparte de las instaladas con Windows 10 y VS2015 o SQL Server.
Cuando intento iniciar el proyecto WebApi, recibo el mensaje:
No se pudo cargar el archivo o ensamblado "System.Net.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
Los paquetes del proyecto incluyen:
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
Después de compilar el proyecto con .NET Framework 4.6.1, System.Net.Http
el archivo no se encuentra en elbin
carpeta.
La ruta del archivo apunta a:
C: \ Archivos de programa (x86) \ Ensamblados de referencia \ Microsoft \ Framework.NETFramework \ v4.6.1 \ System.Net.Http.dll
La ruta del archivo de System.Net.Http.Formatting
puntos a:
C: \ Development \ MyApp \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll
¿Debería todo el proyecto apuntar a 4.5.1 o hay otra forma de hacer referencia a los ensamblajes correctos?
fuente
update-package xxx -reinstall
para todos los paquetes nuget que estoy usando. Tampoco funciona.Respuestas:
Sigue los siguientes pasos,
web.config
Agregue esto al
.csproj
archivo:bin
carpeta debería haber un(WebAppName).dll.config
archivoweb.config
.csproj
archivoDeberia de funcionar
fuente
Cambiar la información de enlace en mi web.config (o app.config), aunque es un "hack" en mi opinión, le permite avanzar con su proyecto después de que una actualización del paquete NuGet golpea su aplicación y le proporciona el System.Net.Http error.
Establecer newVersion = "4.0.0.0"
fuente
En uno de mis proyectos había un paquete nuget con una versión superior de System.Net.Http. y en mi proyecto de inicio hay referencia a System.Net.Http v 4.0.0, acabo de instalar el paquete Nuget System.Net.Http en mi proyecto de inicio y el problema se resolvió
fuente
A
,B
yC
.A
es el proyecto de inicio, y no tiene nada que ver con ningunoB
oC
.C
es un proyecto de prueba paraB
. La ejecución de mis pruebasC
falló porque no tenía un proyecto de referencia (System.Net.Http)A
.Cambiar siguiente:
con lo siguiente:
en web.config
fuente
Si tiene varios proyectos en su solución, haga clic con el botón derecho en el icono de la solución en Visual Studio y seleccione 'Administrar paquetes NuGet para la solución', luego haga clic en la cuarta pestaña 'Consolidar' para consolidar todos sus proyectos en la misma versión del DLL. Esto le dará una lista de ensamblados referenciados para consolidar. Haga clic en cada elemento de la lista, luego haga clic en instalar en la pestaña que aparece a la derecha.
fuente
El bind-redirect anterior no funcionó para mí, así que comenté la referencia a
System.Net.Http
inweb.config
. Todo parece funcionar bien sin él.fuente
Puede solucionar esto actualizando su proyecto a .NET Framework 4.7.2. Esto fue respondido por Alex Ghiondea - MSFT . ¡Por favor, vótenlo como realmente se lo merece!
fuente
Esto funcionará en .NET 4.7.2 con Visual Studio 2017 (15.9.4):
fuente
Tengo el mismo problema y la única forma en que puedo solucionarlo es agregando bindingRedirect a app.confing cómo escribió @ tripletdad99.
Pero si tiene una solución con más proyectos, realmente es una mala actualización actualizar cada proyecto a mano (y también a veces después de actualizar algún paquete Nuget, debe hacerlo nuevamente). Y es la razón por la que escribí un script simple de PowerShell que, si todo app.configs.
Ejemplo de uso:
Probablemente no sea perfecto y también será mejor si alguien lo vincula a la tarea previa a la compilación.
fuente
4.6.1-2 en VS2017 los usuarios pueden experimentar el reemplazo no deseado de su versión de System.Net.Http por la que VS2017 o Msbuild 15 quiere usar.
Eliminamos esta versión aquí:
C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
y aquí:
C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
Luego, el proyecto se construye con la versión a la que hemos hecho referencia a través de NuGet.
fuente
Tenía esto, pero fue porque había agregado un paquete NuGet que había actualizado las redirecciones de enlace. Una vez que eliminé el paquete, las redirecciones todavía estaban allí. Los eliminé todos y luego ejecuté update-package -reinstall. Esto agregó las redirecciones correctas.
fuente
Verifique la versión del framework .net.
Mi marco .net original es una versión anterior.
Después de instalar .net framework 4.6, este problema se resuelve automáticamente.
fuente
Para mí, había configurado mi proyecto para ejecutarse en la última versión de .Net Framework (un cambio de .Net Framework 4.6.1 a 4.7.2).
Todo funcionó, sin errores y publicado sin problemas, y fue solo por casualidad que me encontré con el mensaje de error System.Net.Http, que se muestra en una solicitud de API pequeña, difícil de notar, pero bastante importante sobre el sitio web I ' Estoy trabajando en
Regresé a 4.6.1 y todo vuelve a estar bien.
fuente
La única forma que resolvió este problema de manera limpia para mí (.NET 4.6.1) fue no solo agregar una referencia de Nuget a System.Net.Http V4.3.4 para el proyecto que realmente usaba System.Net.Http, sino también proyecto de inicio (un proyecto de prueba en mi caso).
(Lo cual es extraño, porque el System.Net.Http.dll correcto existía en el directorio bin del proyecto de prueba y los .config assemblyBingings también se veían bien).
fuente
Estaba actualizando un sitio web antiguo usando nuget (incluida la actualización .Net y la actualización MVC).
Eliminé la referencia System.Net.HTTP en VS2017 (era a la versión 2.0.0.0) y volví a agregar la referencia, que luego mostró 4.2.0.0.
Luego actualicé una tonelada de 'paquetes' usando nuget y recibí el mensaje de error, luego noté que algo había restablecido la referencia a 2.0.0.0, así que eliminé y volví a agregar y funciona bien ... extraño.
fuente