2013-04-23 17 views
73

Vì vậy, tôi vừa cập nhật Visual Studio 2012 để cập nhật 2. Nhìn kìa, lần sau tôi đi công bố ứng dụng của tôi (thông qua File Xuất bản trong trường hợp này) tôi nhận thấy rằng có ba tùy chọn mới:Tính năng biên dịch trước trong tùy chọn xuất bản mới có tác dụng gì đối với các ứng dụng MVC4?

  1. Xóa tất cả các file đang tồn tại trước khi xuất bản
  2. tiền biên dịch trong xuất bản (với một liên kết để cấu hình)
  3. Loại trừ các file từ thư mục App_Data

các tùy chọn đầu tiên và thứ ba là khá tự giải thích, nhưng tôi không thể tìm bất kỳ tài liệu nào n trên tùy chọn thứ hai vì nó áp dụng cho MVC. Khi tôi kiểm tra nó, dường như không có bất kỳ thay đổi nào trong các tệp được tạo trên trang web và tôi không thấy bất kỳ thay đổi thực sự nào về hiệu suất.

+0

Vị trí của hàm có thể mới, nhưng bản thân chức năng thì không. Ngay cả khi nó _didn't_ coi biên dịch MVC, WebForms có thể tương thích trong một dự án MVC. –

Trả lời

70

Sử dụng precompiler ASP.NET có thể có tác động sau đây trên ứng dụng MVC của bạn:

  • Nếu bạn có bất cứ điều gì trong App_Code, nó sẽ được biên dịch sẵn thành một DLL trước khi triển khai. Không có biên dịch trước, điều này sẽ xảy ra khi đang chạy trong thời gian chạy ASP.NET.
  • Nếu bạn chọn tùy chọn không làm cho các trang của bạn có thể cập nhật (tức là bỏ chọn hộp kiểm đầu tiên trong hộp thoại cài đặt nâng cao), nó cũng sẽ biên dịch trước chế độ xem của bạn (ASPX và Razor) thay vì biên dịch tự động trong thời gian chạy. Cài đặt mặc định (đã chọn) của "Cho phép trang được biên dịch sẵn có thể cập nhật" cho phép bạn cập nhật nội dung chế độ xem của mình mà không cần phải xây dựng lại toàn bộ dự án.

Nếu bạn không có bất kỳ tệp nào trong App_Code và bạn muốn trang web của bạn vẫn có thể cập nhật, có vẻ như không nhiều.

+0

vì vậy tôi không có bất kỳ tệp nào trong App_Code, nhưng ngay cả khi hộp kiểm bỏ chọn, tất cả các chế độ xem của tôi hiển thị dưới dạng tệp .cshtml. Tôi đã nhận thấy rằng khi tôi đã kiểm tra nó, nó tìm thấy một phần xem tôi đã viết một lúc trước đã có lỗi cú pháp vì vậy tôi có thể thấy rằng nó ít nhất chạm vào những quan điểm đó. Về lý thuyết tôi đoán rằng nên tạo ra một số khác biệt hiệu suất, tôi chỉ không nhìn thấy nó bởi vì quan điểm của tôi là tương đối nhỏ. – Elsimer

+6

@Elsimer Tệp .cshtml của bạn sẽ vẫn tồn tại, nhưng nếu nội dung của chúng được biên dịch trước, bạn sẽ thấy nội dung của chúng được thay thế bằng "Đây là tệp đánh dấu được tạo bởi công cụ biên dịch trước và không nên xóa!". – Jimmy

+4

Ngoài ra, lợi nhuận perf là ​​chủ yếu trên khởi động trang web ban đầu, khi trình biên dịch được gọi động cho mỗi trang. Khi trang đã được nhấn một lần (và được biên dịch), kết quả biên dịch đó sẽ được sử dụng cho các lần tải trang tiếp theo ngay cả khi bạn chưa biên dịch trước. – Jimmy

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