c# - webpages - no se puede cargar el archivo o ensamblado ''system.web.mvc'' ni una de sus dependencias
No se pudo cargar el archivo o el ensamblaje ''System.Web.Mvc, Version=3.0.0.0'' o una de sus dependencias (7)
Actualice la aplicación web.config File
Asegúrese de hacer estos cambios en el archivo web.config de la aplicación, no en el archivo web.config en la carpeta Vistas.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Estoy agregando Ninject en el proyecto MVC usando los siguientes comandos en la Consola del Administrador de Paquetes:
Install-Package Ninject -version 3.0.1.10
Install-Package Ninject.Web.Common -version 3.0.0.7
Install-Package Ninject.MVC3 -Version 3.0.0.6
Cuando ejecuto la aplicación, me sale un error como este:
No se pudo cargar el archivo o el ensamblaje ''System.Web.Mvc, Version = 3.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 del ensamblaje. (Excepción de HRESULT: 0x80131040)
En mi caso, el ensamblaje faltante ya estaba incluido como una referencia al proyecto. Resolví seleccionándolo y luego configurando su propiedad "Copiar Local" en Verdadero. "Publiqué" mi proyecto en IIS utilizando la implementación web de Visual Studio. Esta vez, el ensamblaje se copió en la carpeta / bin del sitio web.
Expandí las referencias y cuando pasé el mouse sobre System.Web.Mvc, observé que su versión es 4.0.0.1. Y su ruta es extrañamente C: / Archivos de programa (x86) / Microsoft ASP.NET / ASP.NET MVC 4 / Assemblies. Mi packages.config mostró que el paquete correspondiente de nuget es Microsoft.AspNet.Mvc.5.2.3. La referencia parece estar equivocada. Así quitó la referencia del proyecto. Luego desinstaló el paquete nuget usando el siguiente comando.
uninstall-package Microsoft.AspNet.Mvc -force
Note la fuerza en el comando.
Luego lo reinstalé por el siguiente comando
install-package Microsoft.AspNet.Mvc -version 5.2.3.0
Ahora me aseguré de que la dll referenciada está apuntando correctamente a nuget one
D: / Vivek / Code1 / Sept17 / packages / Microsoft.AspNet.Mvc.5.2.3 / lib / net45 / System.Web.Mvc.dll
Ahora, cuando ejecuté, descubrí un problema similar con System.Web.Webpages.Razor (Microsoft.AspNet.WebPages nuget) y System.Web.Razor (Microsoft.AspNet.Razor nuget). Así que quité esos también y reinstalé los paquetes correspondientes de nuget.
Entonces finalmente funcionó.
Me enfrentaba a este problema con mi aplicación.
En mi solución, tuvimos un proyecto de aplicación web y un proyecto web-api. La aplicación web estaba consumiendo la web-api.
La solución a mi problema fue que la versión de Mvc dll en la aplicación web era diferente a la del proyecto web-api. Entonces, cada vez que intentaba golpear el api de la web, estaba arrojando un error. Acabo de asegurarme de que ambos proyectos tengan la misma versión de Mvc dll y que las cosas empezaron a funcionar bien. Puedes usar NuGet Package Manager para esto.
Solo mencionándolo como referencia de otros que podrían estar enfrentando un escenario similar.
Si está siguiendo el Pro ASP.NET MVC 5 , siga estos pasos para resolver el problema:
- En el árbol de su proyecto en VS, haga clic con el botón derecho en
References
y vaya aManage NuGet Packages
. - Vaya a
Online
,nuget.org
y busque ninject. - Instale
Ninject
,Ninject.Web.Common
yNinject.MVC5
(el libro dice que instalarMVC3
). - En el menú
Manage NuGet Packages
(desde el paso 1), vaya aUpdates
,nuget.org
. - Actualice todos los módulos, especialmente
Microsoft ASP.NET MVC
.
Si la respuesta de Amighty no funcionó contigo, prueba esto.
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
Esta solución vino después de luchar con este error por largas horas.
Tengo un proyecto de la Microsoft ASP.NET Web API 2.2
que usa Ninject.
Para solucionar el problema, debo instalar el paquete NuGet Microsoft ASP.NET MVC 4
para mi proyecto porque Ninject requiere System.Web.Mvc
. Al hacerlo, Visual Studio agregará System.Web.Mvc
a la referencia del proyecto.
Además, debe establecer Copy Local
= Verdadero para la propiedad de referencia de System.Web.Mvc
, para que la DLL se copie en la carpeta Bin
. La DLL no viene con .NET Framework estándar. Es parte del paquete ASP.NET MVC.