2011-03-31 41 views
42

Tôi đã tự hỏi nếu xem Razor có thể được biên dịch, giống như các khung nhìn dựa trên WebForm?Chế độ xem Razor có thể được biên dịch không?

Thậm chí nó còn có ý nghĩa khi biên dịch các chế độ xem Dao cạo và tại sao ai đó muốn làm điều đó?

+0

Về mặt kỹ thuật, chúng được biên dịch từ trình biên dịch kịp thời. Bạn cũng có thể cho phép xây dựng các khung nhìn để không xây dựng với một hộp kiểm. –

+0

Liên quan: http://stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc –

Trả lời

23

Có, bạn có thể. Hãy xem bài viết sau: Compile your asp.net mvc Razor views into a seperate dll

Hướng dẫn "từng bước" về cách biên dịch số lần xem dao cạo của bạn thành một dll riêng biệt. Tôi không biết nếu đó là những gì bạn định làm nhưng nó chắc chắn sẽ giúp bạn đi đúng hướng.

+4

Câu trả lời này hiện đã lỗi thời, bây giờ bạn nên tham khảo bài đăng này: http://blog.davidebbo.com /2011/06/precompile-your-mvc-views-using.html – Quango

1

Có, có thể. Trong thực tế, ví dụ tốt nhất mà tôi có thể nghĩ đến là các công cụ tạo mẫu email. Nếu bạn biên dịch và lưu trữ mẫu, bạn có thể nhanh chóng trích xuất các email mà không phải trải qua quá trình phân tích cú pháp.

Đó là ví dụ điển hình về việc sử dụng Dao cạo ngoài MVC.

53

Edit:

Đây là một bài viết trên blog về chủ đề này cũng như:

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

Để bày tỏ quan điểm của bạn sẽ được biên soạn, làm như sau;

  1. Unload dự án của bạn bằng cách kích phải đúng cách nhấn vào dự án trên các giải pháp thám hiểm trong VS và nhấp dỡ dự án
  2. kích chuột phải vào dự án mà đã được chuyển đổi sang dự án không có sẵn và nhấp vào "Chỉnh sửa your_project_name .csproj "(rằng sẽ là .vbproj nếu dự án của bạn là dự án VB)
  3. xem mã sau;

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

  4. thay đổi giá trị thẻ MvcBuildViews từ false để true

  5. sau đó lưu nó và tải lại dự án của bạn.

sau khi bạn xây dựng giải pháp để biên dịch nó, bạn sẽ thấy rằng chế độ xem của bạn cũng sẽ được biên soạn.

LƯU Ý: để kiểm tra, phá vỡ một số mã trong một chế độ xem của bạn và cố gắng xây dựng. bạn sẽ thấy rằng bạn sẽ nhận được một thông báo lỗi.

+1

Tôi sẽ thử tính năng này và xem điều gì sẽ xảy ra. –

+0

nó nên đã làm việc. bạn đã thử à? – tugberk

+5

Sau thay đổi này, tôi bắt đầu nhận được thông báo lỗi '" allowDefinition = 'MachineToApplication' vượt quá mức ứng dụng "' khi xây dựng giải pháp của tôi. Giải pháp là chạy _Clean Solution_ trong * cả hai chế độ gỡ lỗi và nhả. –

28

Kiểm tra MvcBuildViews là tuyệt vời nhưng nó thêm một hình phạt 5-10 giây để xây dựng ứng dụng web của bạn nếu nó đủ phức tạp. Nó không lưu trữ đầu ra biên dịch để nó có thể biên dịch đầy đủ tất cả các khung nhìn của bạn mỗi lần.

Tôi tìm thấy một thỏa hiệp tốt đẹp bằng cách làm theo các above advice và thêm một thuộc tính Tình trạng:

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

Chúng tôi mong đợi ReSharper để cờ lên bất kỳ sai sót trong quan điểm nào và các nhà phát triển luôn có thể xây dựng trong cấu hình phát hành như là một thử nghiệm - chúng tôi có một kịch bản "preflight" mà các nhà phát triển chạy để họ có thể dễ dàng đảm bảo rằng các mục tiêu gói hoạt động và vân vân - và nếu tất cả các lỗi đó không thành công, máy chủ xây dựng sẽ bắt được nó.

Có lẽ thủ thuật này là hiển nhiên nhưng tôi chỉ thực sự bắt đầu học về msbuild đúng như trái ngược với viết kịch bản Powershell cho các tác vụ này. Tôi hy vọng điều này là hữu ích cho một ai đó.

+0

Đó là sáng chói thuần túy :) – Korayem

Các vấn đề liên quan