ASP.NET MVC: kompilacja widoków

Zwykle widoki nie są kompilowane aż do momentu publikacji i pierwszego zapytania. Czasami jednak warto, aby były one kompilowane w czasie pracy z kodem. Bardzo łatwo popełnić literówkę, która nie będzie wykryta aż do momentu, gdy użytkownik będzie chciał wejść na tą stronę. Przy wielu widokach jest to dość niewygodne i może okazać się bardzo uciążliwe. Załóżmy, że mamy następujący widok z błędem:

@model dynamic

@{
    ViewBag.Title = "title";
    Layout = null;
}


@NieistniejacaZmienna

Strona skompiluje się bez błędu, co jest problemem. Dopiero, gdy użytkownik spróbuje otworzyć stronę dostanie następujący wyjątek:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'NieistniejacaZmienna' does not exist in the current context

Source Error:


Line 7:  
Line 8:  
Line 9:  @NieistniejacaZmienna

Na szczęście istnieje dość łatwy sposób na zmuszenie VS do skompilowania widoków. Wystarczy otworzyć projekt w notatniku i ustawić następującą właściwość na true:

<PropertyGroup>
  <MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>

Poskutkuje to następującym błędem już na etapie kompilacji:

Error    1    The name 'NieistniejacaZmienna' does not exist in the current context

Trzeba się oczywiście liczyć, że jest to dodatkowe obciążenie i wydłuży trochę czas publikacji.

4 thoughts on “ASP.NET MVC: kompilacja widoków”

  1. Jakiś czas temu pisałem o czymś podobnym – można również użyć Razor Generator. Po zainstalowaniu, do plików .cshtml dodawany jest plik .cs, który przegenerowuje się przy każdej zmianie w widoku i podczas kompilacji rzuca błędami. Taka alternatywa 😉

    Pozdrawiam

    MJ

  2. Cenna wskazówka, dzięki.
    Do prawdy nie rozumiem, dlaczego Microsoft ukrywa tego rodzaju opcje a właściwie nie dodaje do nich skrótu w ustawieniach projektu w VS. Podobna sytuacja z ustawieniem metody porównywania plików przy bublishu. Trzeba ręcznie dokleić true
    w pliku .pubxml aby preview brał pod uwagę sumę kontrolna pliku a nie wyłącznie datę modyfikacji…
    Pozdrawiam

  3. //sorry za duplikat ale mi tagi zjadło 🙂
    Cenna wskazówka, dzięki.
    Do prawdy nie rozumiem, dlaczego Microsoft ukrywa tego rodzaju opcje a właściwie nie dodaje do nich skrótu w ustawieniach projektu w VS. Podobna sytuacja z ustawieniem metody porównywania plików przy publishu. Trzeba ręcznie dokleić
    linijkę w pliku .pubxml aby preview brał pod uwagę sumę kontrolną pliku a nie wyłącznie datę modyfikacji…
    Więcej info tu: http://msdn.microsoft.com/en-us/library/ee942158(v=vs.110).aspx#use_checksum
    Pozdrawiam

Leave a Reply

Your email address will not be published.