2010-05-26 27 views
5

thể trùng lặp:
‘Arrays as attribute arguments is not CLS-compliant’ warning, but no type information givenDọn dẹp C CS3016 cảnh báo # biên dịch: Mảng như các đối số thuộc tính không phải là CLS-compliant

Tôi có một số mã, mà tạo ra cảnh báo này ở một số nơi. Tôi muốn sửa chữa chúng, nhưng tôi không biết họ đang ở đâu bởi vì trình biên dịch C# không báo cáo dòng lỗi (có một vấn đề mở MS Connect cho điều đó).

Có công cụ nào có thể cho tôi biết mã có vấn đề ở đâu không? Công cụ mức IL là tốt, biết tên phương thức và loại khai báo là đủ tốt.

+0

Bằng cách nào đó, tôi đã bỏ lỡ điều đó ... – mark

+0

Tôi thực sự không thấy câu hỏi khác là sự giúp đỡ nào đối với bạn. – user7116

Trả lời

3

Bạn đã tuyên bố một lớp học như:

[SomeAttribute(new string[] { "foo", "bar" }) 
class SomeClass { } 

hoặc đã tuyên bố một thuộc tính như:

class SomeAttribute : Attribute 
{ 
    public SomeAttribute(string[] arr) { } // or another array 
} 

Và tất cả điều này đang xảy ra vì lắp ráp của bạn được đánh dấu là CLSCompliant:

[assembly:CLSCompliant(true)]

+0

Tôi biết tại sao nó xảy ra. Tôi là người đã đánh dấu hội đồng như CLSCompliant (đúng) ngay từ đầu. Tôi muốn sửa tất cả các địa điểm không tuân thủ CLS, nhưng có một thời gian khó khăn để tìm tất cả chúng theo cách thủ công. – mark

1

Tôi muốn áp dụng quy trình sau:

  • Xác định các thuộc tính có mảng trong nhà thầu của họ (sự tinh tế cần thiết để thực hiện điều này rõ ràng phụ thuộc vào có bao nhiêu lớp bạn có mà bắt nguồn từ thuộc tính)
  • Sử dụng Visual Studio "Tìm Mọi Tham khảo" tùy chọn trên thuộc tính các hàm tạo lớp để tìm những thứ được trang trí với thuộc tính sử dụng mảng.

Phần đầu tiên sẽ khá dễ dàng nếu các thuộc tính được đề cập được xác định trong giải pháp của bạn.

Nếu thuộc tính từ phụ thuộc thì bạn có thể phải sử dụng tìm kiếm regex để tìm địa điểm nơi các thuộc tính đó được sử dụng.

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