Marcado de todas las clases en un proyecto compatible con CLS
-
21-09-2019 - |
Pregunta
Si tengo un proyecto y me marca como
<Assembly: CLSCompliant(True)>
¿Es necesario poner CLSCompliant(True)
antes de cada clase en el proyecto, o son todos por defecto en CLSCompliant?
Solución
Agregar el atributo CLSCompliant en el plano de montaje no cambia las clases de todos modos, por lo que no make las clases CLS compatible. Lo que hace es hacer que el compilador para levantar cualquier cosa que no es compatible como un error. Sigue siendo su responsabilidad de hacer realidad de que las clases no se rompen las reglas.
Dicho esto, sin embargo, sí lo hace el filtro hacia abajo y afecta a todas las clases en el montaje sin la necesidad de añadir nuevo para cada clase. Desde aquí :
Si no hay ningún atributo CLS se aplica a una tipo, ese tipo se supone que tiene la mismo cumplimiento CLS como el conjunto en que se define el tipo.
Este artículo es también una buena visión general bastante sobre cómo funciona, lo que tiene que hacer, y por qué es posible que desee hacerlo.
Otros consejos
Lo que sé de CLSCompliant es, por defecto, su montaje no es compatible. En mi opinión, no todos los proyectos tienen que ser CLSCompliant. Proyectos que son herramientas o bibliotecas, que van a ser utilizados por otras aplicaciones deben CLSCompliant. Aunque la construcción de herramientas de Visual StudioN para Windows Live, tuvimos que asegurarnos de que nuestro código no dio ningún error CLSCompliant o advertencias.