2011-03-31 9 views
42

Zastanawiam się, czy można uzyskać widoki Razora, takie jak widoki oparte na WebForm?Czy można tworzyć widoki Razor?

Czy ma sens nawet kompilacja widoków Razor i dlaczego ktoś chciałby to zrobić?

+0

Technicznie rzecz biorąc, są one kompilowane z kompilatora just in time. Można również włączyć budowanie widoków, aby nie powieść kompilacji za pomocą pola wyboru. –

+0

Powiązane: http://stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc –

Odpowiedz

23

Tak, możesz. Zajrzyj do następującego posta: Compile your asp.net mvc Razor views into a seperate dll

To "krok po kroku" przewodnik, w jaki sposób skompilować swoje widoki maszynki do oddzielnej biblioteki dll. Nie wiem, czy to masz zamiar zrobić, ale na pewno doprowadzi cię to we właściwym kierunku.

+4

Ta odpowiedź jest już nieaktualna. Powinieneś teraz odnieść się do tego posta: http://blog.davidebbo.com /2011/06/precompile-your-mvc-views-using.html – Quango

1

Tak, jest to możliwe. W rzeczywistości najlepszym przykładem, jaki mógłbym wymyślić, byłyby szablony wysyłające szablony. Jeśli kompilujesz i buforujesz szablon, możesz szybko oderwać e-maile bez konieczności przechodzenia przez kolejne etapy analizy.

To dobry przykład użycia maszynki Razor również poza MVC.

53

Edit:

Oto blogu na ten temat, a także:

How to Detect Errors of Our ASP.NET MVC Views on Compile Time

Aby uczynić swoje poglądy, które są opracowywane, wykonaj następujące czynności;

  1. zwolnić projekt przez prawo prawo kliknięciu projektu na rozwiązanie Explorer w VS i klikając rozładować projekt
  2. prawym przyciskiem myszy projekt, który został przekonwertowany do niedostępnego projektu i kliknij „Edit your_project_name .csproj "(że będzie .vbproj, jeśli twój projekt jest projektem VB)
  3. zobacz poniższy kod;

    <!--There some lines of code here and I deleted them to get to the point quickly--> 
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <MvcBuildViews>false</MvcBuildViews> 
    

  4. zmienić MvcBuildViews wartości zmiennych z false do true

  5. potem zapisać go i załaduj swój projekt .

po zbudowaniu rozwiązania do kompilacji, zobaczysz, że Twój widok zostanie również skompilowany.

UWAGA:, aby to przetestować, złamać kod w jednym z widoków celu i spróbować zbudować. zobaczysz, że dostaniesz komunikat o błędzie.

+1

Spróbuję i zobaczę co się stanie. –

+0

to powinno zadziałało. próbowałeś tego? – tugberk

+5

Po tej zmianie zacząłem otrzymywać komunikat o błędzie '" allowDefinition = 'MachineToApplication' poza poziom aplikacji "' podczas budowania mojego rozwiązania. Rozwiązaniem było uruchomienie _Clean Solution_ w * obu trybach * debugowania i wydania. –

28

Kontrola MvcBuildViews jest doskonała, ale dodaje karę 5-10 sekund za zbudowanie aplikacji internetowej, jeśli jest wystarczająco złożona. Nie buforuje danych wyjściowych kompilacji, więc za każdym razem wykonuje pełną kompilację wszystkich widoków.

znalazłem piękny kompromis postępując zgodnie z above advice i dodanie atrybutu Stan:

<MvcBuildViews Condition=" '$(Configuration)' == 'Release' ">true</MvcBuildViews> 

my spodziewamy ReSharper do flaga się jakieś błędy w widokach i tak deweloper zawsze można zbudować w konfiguracji uwalnianiu jako test - mamy skrypt "preflight" uruchamiany przez programistów, aby mogli łatwo upewnić się, że cele pakietów działają i tak dalej - a jeśli wszystko to zawiedzie, serwer budowania go złapie.

Może ta sztuczka jest oczywiste, ale ja tylko naprawdę rozpoczął naukę o msbuild prawidłowo, w przeciwieństwie do pisania skryptów PowerShell dla tych zadań. Mam nadzieję, że jest to pomocne dla kogoś.

+0

To czysty blask :) – Korayem

Powiązane problemy