2012-06-19 36 views
7

Tôi đang cố gắng thêm xác thực cho loại của tôi tại thời gian biên soạn bằng Hợp đồng nhưng tiếc là nó không hoạt động. Ví dụ mã dưới đây không cung cấp cho trình biên dịch lỗi trong khi biên dịch dự án. Tôi có nên kích hoạt một cái gì đó?Contract.Assert không ném lỗi biên dịch

Contract.Assert(false, "Invalid state!"); 

Trả lời

7

Có, bạn cần bật kiểm tra tĩnh. Đi vào các thuộc tính của dự án và truy cập tab "Hợp đồng mã". Tất nhiên bạn sẽ cần phải cài đặt phần mở rộng kiểm tra tĩnh đầu tiên, mà IIRC chỉ có sẵn cho Visual Studio Ultimate. Xem user documentation để biết chi tiết về các tùy chọn chính xác có sẵn.

Lưu ý rằng điều này xảy ra sau pha biên dịch ban đầu, vì vậy đôi khi bạn sẽ thấy sự chậm trễ giữa phần đầu tiên của bản dựng và kết quả của trình kiểm tra tĩnh. (Nó không thực sự là lỗi "trình biên dịch" - đó là lỗi "kiểm tra hợp đồng").

+2

Gói [Hợp đồng mã] (http://research.microsoft.com/en-us/projects/contracts/) chứa kiểm tra tĩnh cho các hợp đồng ('cccheck.exe') hoạt động với hầu hết mọi phiên bản của VS, ngoại trừ Express. Nếu bạn có phiên bản Ultimate, tuyệt vời, nếu bạn không - không phải lo lắng, hợp đồng làm việc với chuyên nghiệp tốt. :) –

+0

tài liệu người dùng không còn tồn tại Jon. dự án đã được chuyển đến github. Vui lòng cập nhật liên kết của bạn –

+1

@JohnDemetriou: Đã cập nhật, nhưng trong tương lai nếu bạn biết liên kết mới đã có, tốt hơn là chỉ chỉnh sửa câu trả lời để cập nhật liên kết. –

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