Tôi sử dụng CSharpCodeProvider
để biên dịch các plugin tức thì cho ứng dụng của mình.Số lỗi tối đa trong CSharpCodeProvider.CompileAssemblyFromFile
Hiện tại, bạn có thể thử biên dịch một tệp, có vẻ tốt, nhưng tạo nhiều lỗi, ví dụ mã C# được dán với tệp nhị phân. Có nhiều ký tự, được xử lý với error CS1056: Unexpected character
.
Hành vi này được mong đợi, nhưng quá trình biên dịch tệp "độc hại" này tốn rất nhiều thời gian.
Một giải pháp mà tôi thấy hợp lý là giới hạn số lỗi, sau đó trả về số tiền CSharpCodeProvider.CompileAssemblyFromFile
.
Có thể đặt giới hạn như vậy không?
Tôi thực sự không muốn kiểm tra tệp cẩn thận ngay từ đầu, nếu có thể tránh được.
nếu có * ngay cả một nguy cơ từ xa * mà tệp đến là độc hại, cá nhân tôi sẽ không tin tưởng nó đủ thậm chí để cho nó gần một trình biên dịch; có một số trường hợp thú vị (Eric Lippert sẽ có một danh sách, không nghi ngờ gì) của những thứ trong * hợp lệ-tìm kiếm * C# đó là không cân xứng đắt tiền cho trình biên dịch để cố gắng tìm ra –
@MarcGravell: Đặc biệt, kết hợp khó chịu của độ phân giải quá tải với suy luận kiểu (xem bài đăng trên blog của Eric Lippert về 3SAT). Tuy nhiên, thiết lập một thời gian chờ khó khăn trên quá trình biên dịch sẽ làm cho nó an toàn. – SLaks
@MarcGravell - bạn có một điểm hợp lệ, nhưng, tốt, tôi _do_ muốn có thể tải một tập tin và thử. Tôi biết nó có thể nguy hiểm, nhưng, tốt, đó thực sự là những gì tôi muốn. –