2010-05-26 5 views
5

Duplicar posible:
‘Arrays as attribute arguments is not CLS-compliant’ warning, but no type information givenla limpieza de C CS3016 # aviso del compilador: Las matrices como argumentos atributo no es compatible con CLS

Tengo algo de código, lo que genera esta advertencia en varios lugares. Quiero arreglarlos, pero no sé dónde están porque el compilador de C# no informa la línea del error (hay un problema abierto de MS Connect para eso).

¿Hay alguna herramienta que me diga dónde está el código problemático? La herramienta de nivel de IL está bien, se sabe que el nombre del método y el tipo de declaración es lo suficientemente bueno.

+0

De alguna manera, me he perdido esa ... – mark

+0

Realmente no veo cómo la otra pregunta es de alguna ayuda para usted. – user7116

Respuesta

3

Usted ha declarado una clase como:

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

o ha declarado un atributo como:

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

Y todo esto ocurre porque su conjunto está marcado para ser CLSCompliant:

[assembly:CLSCompliant(true)]

+0

Sé por qué sucede. Yo soy el que marcó la asamblea como CLSCompliant (verdadero) en primer lugar. Deseo arreglar todos los lugares que no cumplen con CLS, pero tengo dificultades para encontrarlos todos manualmente. – mark

1

Yo adoptaría el siguiente proceso:

  • Identificar los atributos que tienen matrices en sus constructores (sofisticación necesarios para ello, obviamente, depende del número de clases que tiene que derivan de atributo)
  • utilizan Visual Studio "Encuentra todas las referencias" opción en el atributo constructores de clase para encontrar las cosas que están decoradas con el atributo usando matrices.

La primera parte debería ser bastante fácil si los atributos en cuestión están definidos en su solución.

Si los atributos son de una dependencia, entonces puede que tenga que usar una búsqueda de expresiones regulares para encontrar los lugares donde se utilizan dichos atributos.

Cuestiones relacionadas