6

Tôi đang làm việc trên hệ thống tích hợp liên tục của mình và tôi quan tâm đến việc mô phỏng hệ thống của chúng tôi xử lý thời gian biên dịch bất ngờ dài. Có cách nào để khiến quá trình biên soạn mất nhiều thời gian để hoàn thành không? Hoặc có lẽ buộc nó vào một số loại vòng lặp mà sẽ mất một lượng lớn thời gian để biên dịch? Tôi đang tìm kiếm một cái gì đó dễ dàng như Thread.Sleep() chỉ trên biên dịch chứ không phải là thực hiện.Có thể viết mã sẽ gây ra thời gian biên dịch dài không?

Làm thế nào để sử dụng các chỉ thị tiền xử lý?

Bất kỳ ý tưởng nào?

+13

Sử dụng C++ và lập trình meta mẫu với các mẫu đệ quy điên cuồng? –

+4

Biến nhận xét đó thành câu trả lời vì sau đó tôi có thể bỏ phiếu cho đúng. –

+0

Thử chức năng ackermann trong mã mẫu. Yếu tố trong o (n!) Cũng có thể làm tốt. – BCS

Trả lời

9

Đây là số MSBuild sleep task nên thực hiện thủ thuật. Gọi nó từ mục tiêu BeforeBuild trong tệp .csproj của bạn hoặc wherever is appropriate cho nhu cầu của bạn.

MSBuild Community Tasks cũng có nhiệm vụ Ngủ, do đó hãy thực hiện việc đó nếu bạn cần sử dụng một số tác vụ khác của mình mà tôi thấy rất hữu ích.

7

Rõ ràng nhiệm vụ Ngủ là cách để đi. Nhưng nếu bạn quan tâm đến cách làm cho trình biên dịch C# mất tùy ý lâu, FYI có thể mã hóa các vấn đề trong mã nguồn, buộc thuật toán phân giải quá tải thực thi thuật toán O (n^m). Chọn n và m đủ lớn và bạn có thể làm cho trình biên dịch thực hiện nhiều công việc tùy thích.

Đây là bài viết của tôi về chủ đề đó nếu bạn quan tâm.

http://blogs.msdn.com/ericlippert/archive/2007/03/28/lambda-expressions-vs-anonymous-methods-part-five.aspx

+0

Tuyệt vời! Cảm ơn về thông tin tuyệt vời. –

2

Tôi đã có đồng nghiệp khi đã viết tuyên bố chuyển đổi dòng 16.000. Phải mất mãi mãi để biên dịch, và sau đó khi ông mở rộng nó nhiều hơn một chút, nó thực sự đã phá vỡ trình biên dịch. Bằng cách nào đó tôi không chắc chắn đó là những gì bạn đã có trong tâm trí, mặc dù.

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