Problema
Después de instalar la versión preliminar de Microsoft ASP.NET Web API OData package 5.0.0-rc1 , termino con la siguiente excepción:
No se pudo cargar el archivo o ensamblado 'System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del ensamblado ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040)
Mi proyecto MVC 4 es nuevo y realmente pequeño, no tiene nada de lujos. Me dirijo a .NET framework 4.5
Necesito este paquete nuget para implementar PATCH usando la clase Delta (cuando uso la versión 4.0.0.0 del paquete, la clase Delta no funciona).
¿Cómo puedo arreglar eso?
Mis versiones de System.Web.Http
En GAC tengo la versión 5.0.0.0 de System.Web.Http
gacutil -l System.Web.Http La caché de ensamblados global contiene los siguientes ensamblados: System.Web.Http, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL
En Visual Studio , cuando busco ensamblados, la versión dada de System.Web.Http es 4.0.0.0 (¿Por qué?)
En mi proyecto , la referencia a System.Web.Http
- Tiene la versión 5.0.0.0
- Apunta a la carpeta \ lib \ net45 \ del paquete
- Tiene CopyLocal = verdadero
Cosas que probé
Intenté enlazar la redirección v 4.0.0.0 a 5.0.0.0 en Web.config
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Pero me da otra excepción:
El intento del método 'System.Web.Http.GlobalConfiguration..cctor ()' de acceder al campo 'System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2' falló.
Supongo que la v 4.0.0.0 realmente necesita ser utilizada por el motor principal de Web Api.
Preguntas vinculadas
Error de análisis de código No se pudo cargar el archivo o ensamblado 'System.Net.Http, Version = 2.0.0.0 en MVC4 Web API No se pudo cargar el archivo o ensamblado' System.Net.Http, Version = 2.0.0.0 en MVC4 Web API
Respuestas:
Visual Studio 2013 tiene una nueva función para solucionar este problema. Cuando compila la aplicación, debería ver advertencias sobre las diferentes versiones de un ensamblado al que se hace referencia. Haga doble clic en la advertencia para agregar redireccionamientos de enlace de ensamblado al web.config.
Consulte http://msdn.microsoft.com/en-us/library/2fc472t2.aspx para obtener más detalles.
jeff.eynon señala a continuación que debe tener el web.config verificado (si usa el control de fuente TFS) para que VS edite el archivo automáticamente. ¡Gracias por el consejo!
fuente
Lo hice funcionar actualizando el paquete WebApi a la versión preliminar usando nuget:
Para forzar el proyecto usando la última versión de WebApi, fueron necesarias algunas modificaciones en la raíz Web.config:
1) Versión de páginas web de 2.0.0.0 a 3.0.0.0
<appSettings> <add key="webpages:Version" value="3.0.0.0" /> </appSettings>
2) Enlace de redireccionamiento a 5.0.0.0 para System.Web.Http y System.Net.Http.Formatting
<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly>
Creo que eso es todo
PD: Solución muy inspirada en WebAPI OData 5.0 Beta: acceder a GlobalConfiguration arroja un error de seguridad
fuente
Encontré el mismo problema y lo resolví estableciendo CopyLocal en verdadero para las siguientes bibliotecas:
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
Debo agregar que uso MVC4 y NET 4
fuente
Experimenté este problema cuando intenté actualizar un proyecto Hot Towel desde la plantilla del proyecto y cuando creé un proyecto vacío e instalé HotTowel a través de nuget en VS 2012 a partir del 23/10/2013.
Para solucionarlo, actualicé a través de Nuget los paquetes Web Api Web Host y Web API a 5.0, la versión actual en NuGet en este momento (23/10/2013).
Luego agregué las instrucciones de enlace:
<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly>
fuente
O puede hacer esto desde NuGet Package Manager Console
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
Y luego podrá agregar la referencia a System.Web.Http.WebHost 5.0
fuente
Elimine System.Web.Http y System.Net.Http.Formatting de sus referencias y agregue referencias nuevamente navegando a su carpeta bin (donde fueron copiadas por nuget) Ahora la versión del archivo dice 5.0.0.0
fuente
Este error apareció varias veces en varios proyectos diferentes.
Lo que finalmente descubrí es que cuando iba a compilar, ya había una copia del ensamblaje binario system.web.mvc en mi carpeta bin.
Para solucionar este problema, haga clic derecho en el ensamblaje en la lista de referencias y seleccione "propiedades". Compruebe si esta es la última versión en la propiedad "Versión". Si es así, cambie "Copiar local" a verdadero.
Esto asegurará que la versión a la que se hace referencia en su proyecto sea la versión que terminará en su carpeta de binarios.
Si aún recibe el error, intente ejecutar nuGet para obtener la última versión, luego intente lo mencionado anteriormente nuevamente.
Buena suerte, ¡este error es un fastidio!
fuente
Me enfrenté al mismo error. Cuando instalé Unity Framework for Dependency Injection, se agregaron las nuevas referencias de Http y HttpFormatter en mi configuración. Así que aquí están los pasos que seguí.
Ejecuté el siguiente comando en la consola del administrador de paquetes nuGet: PM> Install-Package Microsoft.ASPNet.WebAPI -pre
Y se agregó una referencia física a la dll con la versión 5.0
fuente
resuelvo a través de nuget. el primero que instale nuget. el segundo que usa.
la siguiente ilustración:
tercero: compruebe si esta es la última versión mirando la propiedad "Versión".
El último: verifica que el proyecto tenga la última versión nuevamente.
fuente
Me enfrenté al mismo tipo de problema y seguí los pasos a continuación para resolverlo
Vaya a Herramientas -> Administrador de paquetes de biblioteca -> Consola del administrador de paquetes y ejecute el siguiente comando
Paquete de instalación Microsoft.ASPNet.WebAPI -pre
fuente
Después de modificar las referencias en el
Web.config
archivo como se mencionó anteriormente, resolvimos las referencias.Estaba enfrentando un problema similar.
Para nosotros tenemos referencia
Microsoft.Data.Edm.dll
yOData.dll
y otros conjuntos de archivos de programa:C:\Program Files (x86)\Microsoft WCF Data Services\5.0 \bin\.NETFramework\Microsoft.Data.Edm.dll
y
C:\Program Files (x86)\Microsoft WCF Data Services\5.0 \bin\.NETFramework\Microsoft.Data.OData.dll
y la versión fue 5.6.4 .
Una vez que cambio la referencia de ambos ensamblajes a
C:\....Project\packages\Microsoft.Data.Edm.5.6.0
, se resolvió el problemafuente
Entré en el administrador de paquetes nuget y actualicé mis paquetes. Ahora funciona. El principal que actualicé fue Microsoft.AspNet.WebApi.Core. Es posible que deba hacer esto con ambos proyectos para sincronizar las referencias adecuadas.
fuente
Si se produce este problema, consulte web.config en la siguiente sección
La siguiente sección proporciona la versión de la dll particular utilizada
después de verificar esta sección en web.config, abra el explorador de soluciones y seleccione la referencia en el árbol del proyecto como se muestra. Explorador de soluciones-> Referencia
Después de expandir la referencia, busque la dll que causó el error. Haga clic derecho en la referencia de dll y verifique la versión como se muestra en la imagen de arriba.
Si tanto la versión de config dll como la dll referenciada son diferentes, obtendría esta excepción. Asegúrese de que ambos sean de la misma versión, lo que ayudaría.
fuente