c# - net - No se pudo cargar el archivo o ensamblado ''Microsoft.Web.Infrastructure,
mvc c# (13)
Debe descargar el marco ASP.NET MVC en el servidor que aloja su aplicación. Es una solución rápida, solo descárguela e instálela desde aquí (este es el marco de MVC 3 http://www.asp.net/mvc/mvc3 ), luego, boom, está listo para comenzar.
Intenté subir mi sitio web a un servidor. Funcionaba bien con mi host local, así que cargué todo en mi carpeta localhost wwwroot
al servidor y cambié la cadena de conexión.
Pero hay este error:
Exception information:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly ''Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or assembly ''Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'' or one of its dependencies. The system cannot find the file specified.
at RouteDebug.PreApplicationStart.Start()
El proyecto fue nopcommerce
.
¿Qué se debe hacer para resolver este error?
Instalar AspNetMVC3ToolsUpdateSetup descargado desde aquí resolvería este problema sin agregar referencia
Descubrí que, aunque funcionaba en mi cuadro dev, el ensamblaje no se agregaba al proyecto. Busque Microsoft.Web.Infraestructura en NuGet e instálelo desde allí. Luego, asegúrese de que haya seleccionado Copiar local.
Resulta que después de hacer una limpieza de referencia, eliminó Microsoft.Web.Infrastructure
, pero no del archivo packages.config. Después de intentar agregarlo de nuevo usando la Package Manager Console
, Visual Studio dice que ya está instalado, que es falso porque se eliminó.
Luego eliminé la línea de código en el archivo packages.config
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
y corrió el comando otra vez
PM> Install-Package Microsoft.Web.Infrastructure
Después de esto, ahora funciona bien.
Solución muy fácil:
En Visual Studio, vaya a Herramientas / Library Package Manager / Package Manager Console
<PM> Install-Package Microsoft.Web.InfraStructure
Pasar un buen rato
Resharper detectó Microsoft.Web.Infraestructura como una referencia no utilizada y la eliminé. Localmente funcionaba bien, pero luego recibí el mismo error después de publicar en el desarrollador.
Conclusión, tenga cuidado al eliminar las referencias marcadas como no utilizadas por Resharper
Aquí estaba mi escenario.
Tenía una solución de proyectos múltiples que contenía los proyectos A, B, C .. N.
El Proyecto B era una biblioteca de códigos que contenía una fábrica para objetos de selectlist
de selectlist
.
El proyecto se ejecutaría como se esperaba en el desarrollo, pero cuando publicamos en nuestro entorno de prueba recibí el error que estaba encontrando:
Could not load file or assembly ''Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'' or one of its dependencies. The system cannot find the file specified.
Lo que sucedió fue a través del administrador de paquetes Nuget, accidentalmente instalé "Microsoft ASP.NET MVC" que instaló dependencias para:
- Microsoft.AspNet.Razor
- Microsoft.AspNet.WebPages
Bajo y he aquí, Microsoft.AspNet.WebPages depende de "Microsoft.Web.Infraestructura".
Mi solución fue desinstalar los tres paquetes mencionados anteriormente (MVC, Razor, WebPages) y luego hacer clic derecho en referencias> agregar referencia> Ensambles> Extensiones> Sistema.Web.MVC.
Tuve un problema similar. NuGet mostró que el paquete se instaló correctamente, pero la referencia no se agregó a mi proyecto.
Ejecutando <PM> Install-Package Microsoft.Web.InfraStructure
tampoco ayudó porque el administrador de paquetes seguía diciendo que ya estaba instalado
Finalmente lo agregué manualmente editando el archivo csproj y agregando estas líneas:
<Reference Include="Microsoft.Web.Infrastructure">
<HintPath>../packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll</HintPath>
<Private>True</Private>
</Reference>
Eso resolvió el problema.
Intente instalar Web Platform desde https://www.microsoft.com/web/platform/
Espero eso ayude.
A pesar del número de respuestas agregaré otro que en mi humilde opinión hace que las cosas sean un poco más claras.
Como Rob y Wrightmail ya mencionaron Microsoft.Web.Infrastructure
es un paquete NuGet (no se necesita enlace, lo tienes en NuGet Package Manager).
Aparentemente, su proyecto lo mencionó y desapareció de repente. Puede existir una cantidad de razones, pero lo importante es que, a pesar de que haya habilitado la restauración automática de paquetes en Visual Studio, puede :
- Administrar paquetes de NuGet para la solución (menú contextual en el Explorador de soluciones),
- Permitir que NuGet descargue paquetes perdidos (configuraciones),
- Comprueba automáticamente si faltan paquetes durante la compilación en Visual Studio (configuración),
ciertos paquetes pueden requerir una reinstalación manual. No sé qué es lo que confunde a NuGet, tal vez eliminar manualmente una referencia, pero esta es la solución que suelo aplicar en esos casos. La siguiente consola de PM ayuda a restaurar un paquete conservando la versión original (sin actualizar a uno nuevo existente):
Update-Package Microsoft.Web.Infrastructure -Reinstall
Es posible que se requiera preservación de la versión si no desea sobrescribir accidentalmente un paquete existente con su versión más reciente, que posiblemente elimine la funcionalidad "anterior" que haya utilizado en su proyecto.
Y, como prueba, a pesar de ser bastante larga, de que la versión no cambia, aquí está el resultado cuando se ejecuta el comando:
PM> Update-Package Microsoft.Web.Infrastructure -Reinstall
Attempting to gather dependencies information for multiple packages with respect to project ''Samples.NuGet/DemoApp/DemoApp'', targeting ''.NETFramework,Version=v4.5.2''
Attempting to resolve dependencies for multiple packages
Resolving actions install multiple packages
...
Package removal starts here...
...
Removed package ''Microsoft.AspNet.Web.Optimization 1.1.3'' from ''packages.config''
Successfully uninstalled ''Microsoft.AspNet.Web.Optimization 1.1.3'' from DemoApp
Removed package ''WebGrease 1.5.2'' from ''packages.config''
Executing script file ''D:/Projects/DemoApp/packages/WebGrease.1.5.2/tools/uninstall.ps1''
Successfully uninstalled ''WebGrease 1.5.2'' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package ''Microsoft.Web.Infrastructure 1.0.0.0'' from ''packages.config''
Successfully uninstalled ''Microsoft.Web.Infrastructure 1.0.0.0'' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package ''Antlr 3.4.1.9004'' from ''packages.config''
Successfully uninstalled ''Antlr 3.4.1.9004'' from MvcLenseApp
Package ''Antlr.3.4.1.9004'' already exists in folder ''D:/Projects/Lense.Mvc5/packages''
--- Install packages (in reverse order) ---
Package ''Antlr.3.4.1.9004'' already exists in folder ''D:/Projects/DemoApp/packages''
Added package ''Antlr.3.4.1.9004'' to ''packages.config''
Successfully installed ''Antlr 3.4.1.9004'' to DemoApp
...
More package installs here. Omitted for brevity...
...
Package ''Microsoft.Web.Infrastructure.1.0.0'' already exists in folder ''D:/Projects/Lense.Mvc5/packages''
Added package ''Microsoft.Web.Infrastructure.1.0.0'' to ''packages.config''
Successfully installed ''Microsoft.Web.Infrastructure 1.0.0'' to MvcLenseApp
...
More package installs here. Omitted for brevity...
...
Package ''WebGrease.1.5.2'' already exists in folder ''D:/Projects/DemoApp/packages''
Added package ''WebGrease.1.5.2'' to ''packages.config''
Executing script file ''D:/Projects/DemoApp/packages/WebGrease.1.5.2/tools/install.ps1''
Successfully installed ''WebGrease 1.5.2'' to DemoApp
Package ''Microsoft.AspNet.Web.Optimization.1.1.3'' already exists in folder ''D:/Projects/DemoApp/packages''
Added package ''Microsoft.AspNet.Web.Optimization.1.1.3'' to ''packages.config''
...
End of package re-install.
...
Successfully installed ''Microsoft.AspNet.Web.Optimization 1.1.3'' to DemoApp
PM>
Por supuesto, si desea volver a instalar todos los paquetes, es posible que deba familiarizarse con los comandos de actualización / instalación en NuGet aquí y aquí .
Deberá incluir el dll con su proyecto y agregarle una referencia también.
Aquí hay un enlace a un problema similar que ya está en Stack: MVC3 Deployment Dependency Problems
Para mí, Microsoft.Web.Infrastructure.dll
faltaba en la carpeta bin, no estaba configurado para copiar local en el proyecto. Copió el dll de otro proyecto en la solución y se carga la página.
No sé lo que sucedió con mi proyecto, pero hizo referencia a la ruta incorrecta a la DLL. Nuget lo instaló correctamente y, de hecho, estaba en mi sistema de archivos junto con los otros paquetes, pero solo se mencionó incorrectamente.
La carpeta de packages
tiene dos directorios desde mi proyecto y solo estaba subiendo uno iniciando la ruta con ../packages/
. Cambié la ruta para comenzar con ../../packages/
y solucionó mi problema.