Compilar vistas en ASP.NET MVC

Quiero una tarea de msbuild para compilar las vistas para poder ver si hay errores de tiempo de compilación en bueno ... tiempo de compilación. ¿Algunas ideas?

preguntado el 20 de diciembre de 08 a las 08:12

No sé qué motor de visualización está usando, pero si está usando Razor, es posible que desee consultar la publicación de mi blog:chrisvandesteeg.nl/2010/11/22/… sus vistas de asp.net mvc Razor en una dll separada También debería ser posible usar ese código para otros motores de visualización, pero aún no lo he hecho y probado -

8 Respuestas

Sinceramente, recomendaría el RazorGenerador paquete nuget. De esa manera, sus puntos de vista tienen un .designer.cs archivo generado cuando los guarda y además de obtener errores de tiempo de compilación para sus vistas, también están precompilados en el ensamblaje (= calentamiento más rápido) y Resharper también proporciona ayuda adicional.

Para usar esto, incluya el RazorGenerador nuget en su proyecto ASP.NET MVC e instale el "Generador de maquinilla de afeitar"extensión en el elemento debajo de Herramientas → Extensiones y actualizaciones.

Usamos esto y la sobrecarga por compilación con este enfoque es mucho menor. Además de esto, probablemente recomendaría .NET Demon de RedGate que reduce aún más el impacto del tiempo de compilación sustancialmente.

Espero que esto ayude.

contestado el 01 de mayo de 18 a las 13:05

¿Existe una solución similar para VS2012? - Daniel

Desafortunadamente, solo es compatible con C # y no con VB.Net - ed degagne

@zoidbergi RazorGenerator trabaja con VS2012; cuando se usa RazorGenerator.Mvc y RazorGenerator.MsBuild: no se necesita extensión. Ver entrada de blog en stacktoheap.com - Jeroen K.

¿Se puede usar esto solo para encontrar errores, o reemplaza el motor de visualización al implementar la aplicación? - niico

He instalado el paquete nuget RazorGenerator y la extensión Razor Generator. No se ha cambiado nada en mi proyecto. No aparecieron archivos .designer.cs. Yo uso Visual Studio 2017. - Michael Samteladze

Del documento readme word para RC1 (no indexado por google)

Paso posterior a la compilación del compilador ASP.NET

Actualmente, los errores dentro de un archivo de vista no se detectan hasta el momento de la ejecución. Para permitirle detectar estos errores en tiempo de compilación, los proyectos ASP.NET MVC ahora incluyen una propiedad MvcBuildViews, que está deshabilitada de forma predeterminada. Para habilitar esta propiedad, abra el archivo de proyecto y establezca la propiedad MvcBuildViews en true, como se muestra en el siguiente ejemplo:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>

Nota: Habilitar esta función agrega algunos gastos generales al tiempo de compilación.

Puede actualizar proyectos que se crearon con versiones anteriores de MVC para incluir la validación de vistas en tiempo de compilación realizando los siguientes pasos:

  1. Abra el archivo del proyecto en un editor de texto.
  2. Agregue el siguiente elemento debajo de la parte superior <PropertyGroup> elemento: <MvcBuildViews>true</MvcBuildViews>
  3. Al final del archivo del proyecto, descomente el <Target Name="AfterBuild"> elemento y modificarlo para que coincida con lo siguiente:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>

contestado el 10 de mayo de 16 a las 09:05

Si esto no funciona para su proyecto, verifique si no hay un falso en algún lugar de su archivo de proyecto. Estaba anulando el nuevo elemento que agregué encima. - Adrián Grigore

@mxmissile: Scott Guthrie recomendó agregar un proyecto de implementación web a su solución para obtener este tipo de soporte en proyectos de aplicaciones web: weblogs.asp.net/scottgu/archive/2006/09/22/… - Zhaph - Ben Duguid

Asegúrese de que EnableUpdateable esté configurado como falso o, de lo contrario, las vistas no se compilarán previamente. falso cierto (devcarl.posterous.com/…) - carl horberg

¿Por qué, por qué, por qué ... no hay un atajo de teclado para construir con o sin vistas? MS ¿por qué? - Dariol

Esta es la solución agregada a las herramientas MVC. stackoverflow.com/a/2670792/878612 - LKO

Puedes usar el aspnet_compiler para esto:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v /Virtual/Application/Path/Or/Path/In/IIS/Metabase -p C:\Path\To\Your\WebProject -f -errorstack C:\Where\To\Put\Compiled\Site

dónde "/ Virtual / Aplicación / Ruta / O / Ruta / En / IIS / Metabase"es algo como esto:"/ MyApp"O"/ lm / w3svc2 / 1 / root /"

También hay un Tarea AspNetCompiler en MSDN, que muestra cómo integrar aspnet_compiler con MSBuild:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="PrecompileWeb">
        <AspNetCompiler
            VirtualPath="/MyWebSite"
            PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
            TargetPath="c:\precompiledweb\MyWebSite\"
            Force="true"
            Debug="true"
        />
    </Target>
</Project>

respondido 16 mar '18, 12:03

Esto está desactualizado, vea un extracto del documento Léame a continuación. - jarrettv

La otra respuesta describe la tarea del proyecto con más detalle, pero la parte aspnet_compiler sigue siendo correcta (y útil en los agentes de compilación). - mlhDev

Además, si usa Resharper, puede activar el Análisis de toda la solución y detectará cualquier error del compilador que pueda tener en los archivos aspx. Esto es lo que hacemos...

Respondido el 20 de diciembre de 08 a las 12:12

Es cierto que funciona para archivos aspx, pero el análisis de toda la solución no incluye archivos ascx (controles de usuario). mookid8000

Creo que sí en R # 5, pero es un gran recurso para los proyectos grandes (incluso en mi máquina doméstica de 16GB no vale la pena usarlo). - Andrés

@Andrew / @ mookid8000: R # también detectará errores que el compilador no detectará, como vistas y acciones faltantes / incorrectas. R # ralentizará un poco su PC (lo encuentro bien en un proyecto grande con 4GB de ram y una CPU con hiperproceso) pero fácilmente recupero el tiempo que paso esperando, y termino haciendo menos operaciones en mi El código como R # proporciona operaciones de nivel superior que agrupan los muchos pasos que tendría que seguir para lograr la misma tarea manualmente. ¡Tu proyecto debe ser enorme! - Dibujó Noakes

Para proyectos grandes, "ralentizar un poco su PC" es un eufemismo. Mi máquina de compilación tiene 16 GB de RAM y 8 núcleos (2 Xeons), y simplemente SE ARRASTRA. Sin embargo, tengo la sensación de que R # no se hizo para proyectos de nuestro tamaño ... por ejemplo, nuestra solución tiene ~ 30 proyectos, un par de millones de LOC y muchos cientos de vistas. Me encanta R # en nuestros proyectos más pequeños (por ejemplo, algunos proyectos y no más de 50 visitas), pero en el más grande siempre tenemos que apagarlo. - Bip bip

Esto PUEDE funcionar, pero ¡CORRE! Encendí esto pensando que mi solución era pequeña y nunca terminó de 'analizar' y se comió toda mi RAM y CPU. Me tomó 15 minutos recuperarme. - emragins

La próxima versión de ASP.NET MVC (disponible aproximadamente en enero) debería tener una tarea de MSBuild que compile vistas, por lo que es posible que desee esperar.

Vea anuncio

Respondido el 20 de diciembre de 08 a las 12:12

La respuesta dada aquí funciona para algunas versiones de MVC pero no para otras.

La solución simple funcionó para MVC1, pero al actualizar a MVC2, las vistas ya no se compilaban. Esto se debió a un error en los archivos del proyecto del sitio web. Vea este artículo pirateado.

Mira esto: http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

respondido 17 nov., 11:15

Compilar> Ejecutar análisis de código

Tecla de acceso rápido: otro+F11

Me ayudó a detectar errores de Razor.

respondido 03 nov., 16:08

Elegí esta respuesta porque la tecla de acceso rápido expuso un error de Razor. Sin embargo, posteriormente noté que solo parece funcionar si tiene el archivo .cshtml abierto en el IDE. - Michael12345

Usando Visual Studio's Herramientas eléctricas de productividad (gratuitos) extensión ayuda un poco. Específicamente, el Solution Error Visualizer característica. Con él, los errores de compilación marcados visualmente en el explorador de soluciones (en el archivo fuente donde se encontró el error). Sin embargo, por alguna razón, esta característica no funciona como con otros errores en cualquier otro lugar del código.

Con las vistas MVC, cualquier error en tiempo de compilación seguirá subrayado en rojo en sus respectivos archivos .cs, pero la señalización de estos errores no se propaga hacia arriba en el Explorador de soluciones (de ninguna manera, ni siquiera en el archivo fuente que lo contiene).

Gracias por BlueClouds por corregir mi declaración anterior.

Acabo de informar esto como un , el asunto de en el proyecto github de la extensión.

Respondido 12 Feb 17, 07:02

Probé Productivity Power Tools. Pero no se comporta como se dice aquí. Hay un error en la vista de la maquinilla de afeitar, pero la compilación es correcta. las vistas no están marcadas ni subrayadas en rojo, ni en ninguna parte del árbol del explorador de soluciones. - Nubes azules

@BlueClouds: tienes razón. Creé un proyecto de muestra y agregué un error en tiempo de compilación en una vista. La extensión subrayará las líneas de error en rojo, pero no propagará el error en el explorador de soluciones. Estoy corrigiendo lo que dije en la respuesta. Dejo la respuesta aquí, ya que todavía ayuda un poco, aunque no resuelve el problema de manera efectiva. - veverke

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.