visual tutorial studio net mvc for asp asp.net .net asp.net-mvc-4

asp.net - tutorial - aspnet_compiler encuentra una versión incorrecta de System.Web.WebPages 1.0.0.0 en lugar de 2.0.0.0



mvc 4 visual studio 2015 download (11)

Tengo un proyecto ASP.NET MVC4 que compila bien en VS2010. Para fines de implementación, ejecuto un script de Nant que intenta precompilar el sitio web utilizando aspnet_compiler.exe, pero sigo encontrándome con un problema de referencia de ensamblado con System.Web.WebPage

error CS1705: Assembly ''System.Web.Mvc, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' usa ''System.Web.WebPages, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' que tiene un versión más alta que el ensamblado al que se hace referencia ''System.Web.WebPages, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35''

También tengo los siguientes enlaces de ensamblaje en mi web.config:

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>

y mi csproj tiene la siguiente referencia:

<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <Private>True</Private> <HintPath>../packages/AspNetWebPages.Core.2.0.20126.16343/lib/net40/System.Web.WebPages.dll</HintPath> </Reference>


Eliminar y volver a agregar el sistema de referencia.Web.Mvc Hizo el trabajo por mí


En tal caso, vale la pena hacer una ''Buscar en archivos'' en todos los archivos en la carpeta raíz de su solución.

Para el ejemplo anterior, habría buscado: System.Web.WebPages, Version=1.0.0.0

De esta forma, puede deshacerse de todas las referencias a la versión anterior.


Este error también se produce cuando MvcBuildViews se establece en verdadero.

Me di cuenta de que siempre obtendría este error al construir toda la solución usando ''Build Solution''. En ese momento, si inmediatamente construí el proyecto MVC por sí mismo (haga clic con el botón secundario en el proyecto y luego en Generar), el proyecto MVC se compilaría correctamente.

Parece que construir el proyecto MVC por sí solo tendría éxito siempre que no desencadene construcciones en sus proyectos dependientes (es decir, que estén actualizados). Pero la construcción con ''Build Solution'' siempre falla con este error.


Experimenté este problema al actualizar un sitio de MVC 3 a 5.2.3.0.

Mi problema era que TFS no agregaba los paquetes y las DLL asociadas de la instalación nuget.

Agregué manualmente las siguientes carpetas en la carpeta de paquetes de la solución.

Microsoft.AspNet.Razor.3.2.3
Microsoft.AspNet.WebPages.3.2.3

Microsoft.Web.Infraestructura.1.0.0.0

Una vez comentado, el servidor de compilación ya no tenía el problema.


Me rasqué la cabeza por un tiempo sobre este problema cuando lo tuve. Eventualmente noté que tenía la siguiente sección en la sección "runtime" de mi web.config.

<runtime> . . . <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> . . . </runtime>

Como puede ver, esto se refiere a la versión 2 del ensamblado, que no coincide con el siguiente código que también tiene en la sección system.web / compilation / assambleas de web.config.

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

El ensamblaje real al que se hace referencia en Referencias para el proyecto es, de hecho, v1.0.0.0, así que cambié el primer fragmento de código anterior al siguiente, que solucionó el problema de inmediato. No estoy seguro de cómo llegó el error en primer lugar.

<runtime> . . . <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" /> </dependentAssembly> . . . </runtime>


Para mí, este problema probablemente causó la compra de actualizaciones a la última versión de .NET a través del instalador de Web Platform, pero no tenía instalada la última versión de ASP.NET MVC. Al actualizar esto, el instalador de la plataforma web solucionó los problemas.


Para mí, fue una referencia a System.Web.WebPages.Administration v1.0.0.0 quien fue el culpable. Una vez eliminado, todo funcionó sin ningún ajuste de Web.config.


Para nosotros, el problema era una copia antigua de la DLL relevante en la carpeta _bin_deployableAssemblies . Eliminar esto nos ha configurado correctamente con la versión 2.0.


Resolví este problema haciendo referencia explícitamente al ensamblado 2.0 en Web.config. Supongo que, por alguna razón, el compilador de ASP.NET (en mi caso al ejecutar MvcBuildViews ), MvcBuildViews usa el antiguo ensamblado 1.0, si se encuentra.

<?xml version="1.0" encoding="utf-8"?> <configuration> <!-- … --> <system.web> <!-- … --> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> </assemblies> </compilation> <!-- … --> </system.web> <!-- … --> </configuration>

Por cierto: parecía que este problema ocurrió por primera vez después de que agregué un componente ASP.NET MVC 3.0 de un tercero. Ese componente funciona bien a través del enlace de ensamblado, pero puede ser la razón por la cual el compilador de ASP.NET intenta cargar primero las páginas web 1.0.


Tuvimos un problema similar.

Ahora estamos usando Visual Studio 2012 para desarrollar y cuando convertimos un proyecto de 2010 a 2012 e intentamos implementarlo, ASP.NET requería 2.0.0.0 en lugar de 1.0.0.0.

Después de algunas investigaciones, vi que el proyecto no hacía referencia a una versión específica de System.Web.WebPages, por lo que después de actualizar a VS 2012 estaba buscando la versión 2.0.0.0.

Si elimina la referencia de su proyecto y luego vuelve a agregar la versión específica del GAC, funciona correctamente.


solo vaya a las referencias y busque System.Web.Mvc versión 4.0 o más y agréguela. Acabo de agregar una referencia de System.web.mvc 4.0.0.1 y funciona.

No olvides eliminar la versión anterior de mvc.