405 votos

Compilar vistas en ASP.NET MVC

Quiero una tarea msbuild para compilar los puntos de vista para que pueda ver si hay errores en tiempo de compilación en pozo... tiempo de compilación. ¿Alguna idea?

445voto

JarrettV Puntos 9099

Desde el readme doc de word para RC1 (no son indexados por google)

ASP.NET Compilador Posterior a la generación de Paso

En la actualidad, los errores dentro de un archivo de vista no son detectados hasta el tiempo de ejecución. Para permitirle detectar estos errores en tiempo de compilación, ASP.NET MVC proyectos incluyen ahora una MvcBuildViews de la propiedad, que está desactivado por defecto. Para habilitar esta propiedad, abra el archivo de proyecto y el conjunto de la MvcBuildViews propiedad a 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 : al Habilitar esta característica añade sobrecarga al momento de la construcción.

Usted puede actualizar los proyectos creados con versiones anteriores de MVC para incluir a la hora de compilar la validación de puntos de vista, realizando los siguientes pasos:

  1. Abra el archivo de proyecto en un editor de texto.
  2. Agregar el siguiente elemento en la parte superior-la mayoría de los <PropertyGroup> elemento: <MvcBuildViews>true</MvcBuildViews>
  3. Al final del archivo de proyecto, quite el comentario de la <Meta Name="AfterBuild"> elemento y modificar para que coincida con los siguientes:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>

71voto

Mirko Puntos 1871

Yo francamente recomendaría el RazorGenerator paquete de nuget. De esa manera, sus opiniones tienen una .archivo de designer.cs genera cuando se salva, y en la parte superior de llegar el momento de la compilación de los errores de puntos de vista, también son precompilado en la asamblea (= velocidad de calentamiento) y Resharper proporciona ayuda adicional también.

Para utilizar esta incluye la RazorGenerator paquete de nuget en ti ASP.NET proyecto de MVC y de instalar el "Razor" un Generador de extensión en el punto en Herramientas -> Extensiones y Actualizaciones

Utilizamos esta y la sobrecarga por compilar con este enfoque es mucho menos. En la parte superior de esta, probablemente voy a recomendar .NET Demonio de RedGate que reduce aún más el tiempo de compilación impacto sustancialmente.

Espero que esto ayude.

35voto

maxnk Puntos 4257

Usted puede utilizar 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

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

También hay un AspNetCompiler Tarea en MSDN, mostrando 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>

20voto

bh213 Puntos 2927

Además, si utilizas Resharper, puedes activa solución amplia análisis y detectará los errores del compilador que tienes en archivos aspx. Eso es lo que hacemos...

9voto

No sé qué viewengine usas, pero si estás usando maquinilla de afeitar, tal vez quieras ver mi post de blog: compilar sus opiniones asp.net mvc maquinilla de afeitar en un archivo dll separada

Debería ser posible usar ese código para otros viewengines también, pero no han hecho y probado

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: