2013-02-14 35 views
7

Chúng tôi có một dự án và muốn xây dựng chế độ xem để tạo ra lỗi thời gian biên dịch nếu có bất kỳ điều gì sai trong tệp .cshtml của Chế độ xem.ASP.Net MVC MvcBuildViews tăng thời gian biên dịch mạnh mẽ

Tuy nhiên, thời gian biên dịch tăng đáng kể:

  • MvcBuildViews = true mất 62 giây
  • MvcBuildViews = false mất 9 giây

là một cái gì đó này có thể chấp nhận? Nguyên nhân sự gia tăng là khá quyết liệt trong đó chúng ta không thể chịu đựng được để chờ đợi thời gian biên dịch như vậy. Bất kỳ cách nào chúng tôi có thể cải thiện trình biên dịch như vậy?

Dự án đến nay bao gồm khoảng 130 lượt xem & Xem một phần (.cshtml files). Đây có được coi là lớn/trung bình/nhỏ không?

+0

http://www.luisrocha.net/2011/10/avoiding-mvcbuildviews-build-time.html –

+0

Thử thay thế StackOverflow: [StackExchange.Precompilation] (https://stackoverflow.com/a/35977582/1141876) – fiat

Trả lời

2

Chúng tôi gặp khó khăn với cùng một vấn đề. Chúng tôi bắt đầu biên dịch các Chế độ xem để nắm bắt các vấn đề rõ ràng sẽ xuất hiện trên chúng tôi trong các thử nghiệm Tích hợpKiểm tra UX. Thậm chí tệ hơn là những lỗi mà bằng cách nào đó len lỏi vào sản xuất.

Nhưng, như bạn thấy, thời gian xây dựng của chúng tôi trở nên không thể chấp nhận. Giống như bạn, các nhà phát triển của chúng tôi xây dựng vô số lần và điều đó đã trở thành một phần quan trọng trong ngày của chúng tôi. Chúng tôi đã có những câu chuyện cười về việc thử nghiệm sau bữa trưa nên việc xây dựng có thể được thực hiện trong khi chúng tôi ra ngoài.

Cuối cùng chúng tôi đã chuyển sang tòa nhà trước kiểm tra UX.

Bây giờ, chúng tôi đang tiến tới biên dịch trước. Chỉ có một người trong nhóm của chúng tôi đã áp dụng nó cho bây giờ và rõ ràng biên dịch trước là đáng chú ý hơn so với xây dựng (tăng dần so với tổng số). Và thiết lập về cơ bản là tìm nạp nuget.

Những bài viết này sẽ là một khởi đầu tốt

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

+0

Cảm ơn, sẽ kiểm tra điều này! :) –

11

Vâng, tôi nghĩ rằng có khả năng để biên dịch các quan điểm là một điều tốt bởi bản thân nhưng tôi không thể chờ đợi lâu nữa. Vì vậy, những gì tôi thích làm là thêm rằng MvcBuildViews = true bên trong ProperyGroup của phiên bản để bạn chỉ Compile quan điểm đồng thời phát hành và trước khi triển khai

Nhóm bất động sản sẽ trông như thế này:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

Vì vậy, hãy đặt

<MvcBuildViews>true</MvcBuildViews> 

Bên trong khối Bản phát hành này. theo cách này, bạn vẫn biên dịch số lần xem của mình một lần và không phải mỗi khi bạn cố gắng gỡ lỗi ...

+0

Chúng tôi cũng sử dụng cách tiếp cận đó. Hợp pháp. –

0

Đặt MvcBuildViews thành false trong csproj cho cấu hình gỡ lỗi.

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

Thêm lệnh bên ngoài sau trong menu "Tools/Công cụ bên ngoài"

Title: Compile with MVC views 
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 
Arguments: $(SolutionDir)$(SolutionFileName) /p:MvcBuildViews=true 
Initial directory: $(SolutionDir) 
Use Output window: checked 

Sau đó, thêm một shortcut cho rằng: Tới trong các công cụ/options/Environnement/bàn phím Xác định vị trí lệnh "Tools .ExternalCommandX "trong đó X là vị trí của lệnh bên ngoài của bạn, nơi bạn vừa thêm nó. Gán một phím (Ví dụ: Ctrl-shift-1)

Bây giờ giải thích: Chúng tôi có cùng một vấn đề. Chúng tôi không muốn biên dịch các lượt xem phần lớn thời gian nhưng chúng tôi muốn biên dịch chúng trước khi kiểm tra mã, bằng cách này chúng tôi biên dịch lượt xem 1 lần trong số 50 hoặc một số thứ. Để đạt được điều này, tôi đã thêm một lệnh công cụ bên ngoài vào msbuild với tham số mvcbuildviews. Hạn chế duy nhất là các lỗi không được liệt kê trong cửa sổ lỗi của studio trực quan, bạn phải nhìn vào cửa sổ đầu ra và nhấp đúp vào lỗi nếu có.

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