asp.net-mvc-4 - net - web forms c# tutorial
No se pudo cargar el archivo o ensamblado System.Net.Http, Version=4.0.0.0 con ASP.NET(MVC 4) Web API OData Prerelease (14)
Problema
Después de instalar el paquete de Microsoft ASP.NET Web API OData 5.0.0-rc1 prelanzamiento 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 ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Mi proyecto MVC 4 es nuevo y realmente pequeño, no tiene nada de lujoso. 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 El caché de ensamblaje global contiene los siguientes ensamblajes: System.Web.Http, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL
En Visual Studio , cuando navego en ensambles, 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 = true
Cosas que probé
Intenté enlazar redirigir 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:
Intento por el método ''System.Web.Http.GlobalConfiguration..cctor ()'' para acceder al campo ''System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2''.
Supongo que la versión 4.0.0.0 realmente necesita ser utilizada por el motor principal de Web Api.
Preguntas relacionadas
Error de análisis de código No se pudo cargar el archivo o ensamblado ''System.Net.Http, Versión = 2.0.0.0 en la API web MVC4 No se pudo cargar el archivo o ensamblado'' System.Net.Http, Versión = 2.0.0.0 en la API web MVC4
Después de modificar las referencias en el archivo Web.config
como se mencionó anteriormente, resolvimos las referencias.
Estaba enfrentando un problema similar.
Para nosotros, tenemos referencia Microsoft.Data.Edm.dll
y OData.dll
y otros ensamblajes 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 ensamblados a C:/....Project/packages/Microsoft.Data.Edm.5.6.0
, se resolvió el problema
Elimine System.Web.Http y System.Net.Http.Formatting de sus referencias y agregue referencias de nuevo navegando a su carpeta bin (donde fueron copiados por nuget) Ahora la versión del archivo dice 5.0.0.0
Encontré el mismo problema y lo resolví configurando CopyLocal en true para las siguientes librerías:
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
Debo agregar que uso MVC4 y NET 4
Enfrenté el mismo error. Cuando instalé Unity Framework para Dependency Injection, las nuevas referencias de Http y HttpFormatter se agregaron a mi configuración. Así que aquí están los pasos que seguí.
Ejecuté el siguiente comando en NuGet Package Manager Console: PM> Install-Package Microsoft.ASPNet.WebAPI -pre
Y agregó referencia física al dll con la versión 5.0
Este error apareció varias veces en varios proyectos diferentes.
Lo que finalmente descubrí es que cuando construía, ya había una copia del ensamblado binario system.web.mvc en mi carpeta bin.
Para solucionar esto, haga clic derecho en el conjunto en la lista de referencias y seleccione "propiedades". Verifique si esta es la última versión mirando la propiedad "Versión". Si es así, cambie "Copiar local" a verdadero.
Esto asegurará que la versión referenciada en su proyecto sea la versión que terminará en su carpeta de binarios.
Si aún obtiene el error, intente ejecutar NuGet para obtener la última versión, luego intente lo anterior nuevamente.
Buena suerte - ¡este error es un dolor!
Esto debería funcionar, tuve el mismo problema e hice esto para solucionarlo:
Hice una captura de pantalla del sitio oficial de MSDN ya que no tuve tiempo de escribir una respuesta adecuada.
Experimenté este problema cuando traté de actualizar un Hot Towel Project 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 los paquetes Nuget the Web Api Web Host y Web API a 5.0, la versión actual en NuGet en este momento (10/23/2013).
Luego agregué el enlace dirige:
<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>
Fui al administrador de paquetes nuget y actualicé mis paquetes. Ahora funciona. El principal que actualicé fue Microsoft.AspNet.WebApi.Core. Puede ser necesario hacer esto con ambos proyectos para sincronizar las referencias adecuadas.
Lo hice funcionar actualizando el paquete de WebApi a la versión preliminar usando nuget:
PM> Microsoft.AspNet.WebApi -Pre
Para forzar el proyecto utilizando la última versión de WebApi, algunas modificaciones a la raíz Web.config fueron necesarias:
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 redirección 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
PS: Solución altamente inspirada en WebAPI OData 5.0 Beta - El acceso a GlobalConfiguration arroja un error de seguridad
Me enfrenté al mismo tipo de problema y seguí los pasos a continuación para resolver el problema
Vaya a Herramientas -> Administrador de paquetes de biblioteca -> Consola de Administrador de paquetes y ejecute el siguiente comando
Install-Package Microsoft.ASPNet.WebAPI -pre
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
Si ocurre este problema, revise web.config en la siguiente sección
La sección siguiente proporciona la versión de dll particular utilizada
después de consultar esta sección en web.config, abra el explorador de soluciones y seleccione la referencia del árbol del proyecto como se muestra. Solution Explorer-> Referencia
Después de expandir la referencia, busque el dll que causó el error. Haga clic derecho en la referencia dll y verifique la versión como se muestra en la imagen de arriba.
Si tanto la versión de configuración 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.
Visual Studio 2013 tiene una nueva función para encargarse de esto. Cuando construya la aplicación, debería ver advertencias sobre las diferentes versiones de un ensamblaje al que se hace referencia. Haga doble clic en la advertencia para agregar redireccionamientos de enlace de ensamblaje a 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 necesita tener el web.config desprotegido (si usa el control de fuente TFS) para que VS edite el archivo automáticamente. ¡Gracias por el consejo!
lo soluciono por cierto nuget. el primero que instalas nuget. el segundo que usas
ilustración siguiente:
tercero: compruebe si esta es la última versión mirando la propiedad "Versión".
Finalmente, el proyecto de cheques tiene la última versión nuevamente.