2015-03-04 11 views
9

Tôi có một giải pháp với 50 dự án và mỗi dự án có tối thiểu 100 tệp (mà tôi nghĩ là có liên quan).Độ trễ dài trước khi Visual Studio bắt đầu xây dựng

Vấn đề là khi tôi xây dựng giải pháp hoặc một dự án duy nhất, có sự chậm trễ từ 5 đến 10 giây trước khi cửa sổ "Xây dựng đầu ra" được ghi vào. Việc đặt độ dài "Build Output" thành "Diagnostic" không đưa ra bất kỳ dấu hiệu nào là nguyên nhân của sự chậm trễ. Sự chậm trễ này thậm chí xảy ra khi không có tệp nào bị thay đổi (được tạo trước đó).

=== Build: 0 succeeded, 0 failed, 10 up-to-date, 0 skipped ========== 

Khi có thay đổi, trong Đầu ra xây dựng, nó cho biết việc xây dựng mất khoảng 2 giây để hoàn thành, tuy nhiên đầu cuối đến cuối mất khoảng 7 đến 12 giây.

xây dựng đầu ra:

1>(omitted) 
1>Time Elapsed 00:00:01.99 
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ========== 

MSBuild:

Build succeeded. 
    0 Warning(s) 
    0 Error(s) 

Time Elapsed 00:00:02.17 

C:\Projects\SharedKernel.Tests> 

Chạy MSBuild qua dòng lệnh không có chậm trễ như vậy, 2.17 giây là thời gian khi nhấn trên bàn phím để hoàn thành.

Từ những gì tôi có thể nói, các tác vụ msbuild tự thực thi nhanh trong Visual Studio, nhưng có vẻ như Visual Studio đang làm điều gì đó đằng sau hậu trường trước khi tác vụ msbuild bắt đầu gây ra sự chậm trễ này.

Khi tôi kiểm tra Visual Studio (devenv.exe) mặc dù Process Monitor tôi nhận thấy các cuộc gọi đến CreateFile, QueryDirectory, và CloseFile cho mỗi tập tin và thư mục trong dự án và phụ thuộc của dự án. Điều này có vẻ tương quan với độ trễ khi nhìn vào dòng thời gian.

Làm cách nào để giảm thời gian trễ khi tôi bắt đầu xây dựng quy trình xây dựng từ bên trong Visual Studio (nhấp chuột phải vào dự án> xây dựng), khi xây dựng thực sự xảy ra?

Tôi nhìn câu trả lời sau đây để giải quyết, tuy nhiên họ hoặc là không giảm sự chậm trễ hoặc chỉ đơn giản là không thể áp dụng:

+0

Khi bạn "Xây dựng" một giải pháp như được ứng dụng để "Xây dựng lại" giải pháp, nó chỉ xây dựng lại các tệp (.exes và như vậy) đã thay đổi, do đó nếu bạn thực hiện một thay đổi nhỏ, nó sẽ mất nhiều thời gian hơn để kiểm tra tất cả các tệp trong giải pháp của bạn tìm kiếm thay đổi hơn là viết những thay đổi nhỏ (tòa nhà thực tế). Đây có thể là sự chậm trễ nhỏ mà bạn đang gặp phải. – CalebB

+0

Tôi có một sự chậm trễ đáng kể khi thực hiện "Xây dựng", ngay cả khi không có tệp nào thay đổi. Sự chậm trễ dài hơn khi thực hiện "Xây dựng" trên "Giải pháp". Ví dụ cụ thể của tôi là khi thực hiện "Xây dựng" trên một dự án đơn lẻ "Dự án". – Matthew

+0

Ngay cả khi không có gì thay đổi, nó vẫn sẽ xem xét giải pháp hoặc dự án để thay đổi. – CalebB

Trả lời

0

Tôi nghĩ vấn đề của bạn là "Tôi có một giải pháp với 50 dự án". Trong kinh nghiệm của tôi, điều này không nên được sử dụng để phát triển. Điều này chỉ nên được sử dụng cho một máy chủ xây dựng. Vì vậy, những gì tôi sẽ làm là, làm cho một số tập tin giải pháp. Một dự án lớn với tất cả các dự án cho máy chủ xây dựng và một số dự án chỉ với một vài dự án để phát triển. Đóng gói của một số giải pháp này nên được hướng dẫn bởi những gì thường xuyên thay đổi với nhau. Nếu câu trả lời là tất cả mọi thứ tôi sẽ đặt câu hỏi về cấu trúc dự án.

Bởi vì tôi không thực sự trả lời câu hỏi của bạn chính xác so với gì so với msbuild, tôi sẽ normaly viết này như một bình luận. Nhưng danh tiếng của tôi không đủ ngay bây giờ (làm việc trên đó) nhưng bởi vì không ai khác đề nghị điều này, tôi nghĩ rằng nó sẽ có giá trị đáng kể một câu trả lời. Hay điều này quá rõ ràng là không ai chỉ ra điều này? Vậy hãy tha thứ cho tôi.

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