2009-10-28 21 views
9

Kompilując moje rozwiązanie, mam kilka ostrzeżeń z następujących powodów:„Tablice jako argumenty atrybut nie jest CLS zgodny” ostrzeżenie, ale nie ma informacji o typie podane

warning CS3016: Arrays as attribute arguments is not CLS-compliant 

Żadna inna informacja na jaki rodzaj jest niezgodna jest podawany. W moich projektach mam pewne atrybuty, które pobierają argumenty tablic parametrów w swoich konstruktorach, ale wszystkie są wewnętrzne i nie powinno to wpływać na zgodność z CLS. Dlaczego podane jest ostrzeżenie i na jakim typie jest ono podawane?

+1

Czy znalazłeś łatwy sposób na znalezienie miejsca, w którym pojawiło się ostrzeżenie? – jamiebarrow

Odpowiedz

6

CS3016.

Jeśli masz atrybut, który przyjmuje tablicę jako argument, a projekt jest oznaczony jako CLSCompliant, otrzymasz to ostrzeżenie.

+3

Ale atrybut jest wewnętrzny dla zespołu - nie jest publicznie dostępny. To nie powinno mieć wpływu na zgodność z CLS. – thecoop

3

Wpadłem na to dzisiaj. Pojawiły się 4 wystąpienia ostrzeżenia. Następnie stwierdziłem, że miałem atrybut dekorujący 4 publiczne metody w tym zespole. Po usunięciu ich jeden po drugim błędy zniknęły jeden po drugim.

Ponadto, jeśli jesteś w porządku, nie będąc zgodnym z CLS, możesz umieścić [CLSC zgodne (false)] na metodach ozdobionych atrybutem (lub klasą, dla której zdefiniowano metody). Umieszczenie go na niepoprawnym konstruktorze/klasie nie działa. Sądzę, że ma to sens, ponieważ ostatecznie atrybut jest prawdopodobnie odsłonięty poza złożeniem jako część metadanych metody publicznej.

+4

Ponadto, jeśli jesteś OK, nie będąc zgodnym z CLS, możesz umieścić [CLSC zgodne (false)] na metodach ozdobionych atrybutem (lub klasą, dla której zdefiniowano metody). Umieszczenie go na niepoprawnym konstruktorze/klasie nie działa. Sądzę, że ma to sens, ponieważ ostatecznie atrybut jest prawdopodobnie odsłonięty poza złożeniem jako część metadanych metody publicznej. – Brent

0

wpadłem na ten sam problem, i to, co musiałem zrobić, to użyć okna dialogowego „Znajdź w plikach” w VS2010 wybierz użytkowania: symbole wieloznaczne i W polu Znajdź: pole tekstowe wpisać

\[*\(*\)\] 

To tworzy listę wszystkich instancji atrybutów. Poszedłem jeden po drugim i udało mi się zidentyfikować i poprawić ostrzeżenia.

Powiązane problemy